From aaf5be0eb6bf8eea138191dba7d3c713f692af6d Mon Sep 17 00:00:00 2001 From: "Matteo F. Vescovi" Date: Tue, 3 Apr 2012 10:49:12 +0200 Subject: [PATCH] Imported Upstream version 0.1.10 --- ChangeLog | 137 ++ ChangeLog.pre-0-1 | 3345 -------------------------------------- INSTALL | 10 +- Makefile.am | 24 - Makefile.in | 22 - NEWS | 4 +- README | 168 +- babl/babl-conversion.c | 2 +- babl/babl-version.h | 2 +- babl/base/model-rgb.c | 18 +- babl/base/util.h | 21 +- configure | 30 +- configure.ac | 2 +- extensions/Makefile.am | 5 + extensions/Makefile.in | 18 + extensions/fast-float.c | 471 ++++++ extensions/float.c | 230 +++ extensions/gegl-fixups.c | 78 +- extensions/gggl-lies.c | 283 ---- extensions/gggl.c | 3 +- extensions/sse-fixups.c | 30 + 21 files changed, 1028 insertions(+), 3875 deletions(-) delete mode 100644 ChangeLog.pre-0-1 create mode 100644 extensions/fast-float.c create mode 100644 extensions/float.c diff --git a/ChangeLog b/ChangeLog index cd1fe83..998ca22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,140 @@ +commit 01617bfafbd266ebb435355309505843686bfac4 +Author: Øyvind Kolås +Date: Sun Apr 1 19:41:47 2012 +0100 + + extensions: quadruple precision of LUT based floatfuncs + + (without increasing the size of the lookup tables, with neglible + performance cost) + + extensions/fast-float.c | 36 ++++++++++++++++++++++-------------- + 1 files changed, 22 insertions(+), 14 deletions(-) + +commit c94d8493bcffb8acd499a8a993545c95f865f5e3 +Author: Øyvind Kolås +Date: Sun Apr 1 15:08:13 2012 +0100 + + fast-float: reduce overhead of saturating LUT + + extensions/fast-float.c | 7 +------ + 1 files changed, 1 insertions(+), 6 deletions(-) + +commit 9964f870b1e9599ccd6091c3869ad14ca030ff98 +Author: Øyvind Kolås +Date: Sun Apr 1 15:03:10 2012 +0100 + + extensions/fast-float: reduce precision + + Reduce sizes of lookup tables by an order of magnitude, doubling + the run-time + performance. + + extensions/fast-float.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +commit df7b656e4e6b0cfe03713fa71c2ab4c3055aa327 +Author: Øyvind Kolås +Date: Sun Apr 1 03:08:53 2012 +0100 + + extensions: add lut based gamma for float + + extensions/Makefile.am | 3 +- + extensions/fast-float.c | 463 + +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 465 insertions(+), 1 deletions(-) + +commit efcbbf180060385edfd9922e7de3ffc8895d0747 +Author: Øyvind Kolås +Date: Sat Mar 31 17:08:16 2012 +0100 + + babl: reduce number of pixels tested when profiling to 128 + + babl/babl-conversion.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3a88e9d917f96935c1abaac011b52bdc3e2d85b8 +Author: Øyvind Kolås +Date: Sat Mar 31 15:34:31 2012 +0100 + + extensions: get rid of some of the conversions with the highest errors + + babl/babl-conversion.c | 2 +- + extensions/gegl-fixups.c | 72 ------------ + extensions/gggl-lies.c | 283 + ---------------------------------------------- + 3 files changed, 1 insertions(+), 356 deletions(-) + +commit 4f8c43e0ee4c5f9ecb453cc5a4bf27d8a11202c1 +Author: Øyvind Kolås +Date: Sat Mar 31 15:06:52 2012 +0100 + + extensions: remove optmized powf, use the fully correct optimization + from base + + extensions/float.c | 124 + ++++++--------------------------------------------- + 1 files changed, 15 insertions(+), 109 deletions(-) + +commit 1f5b281382b8511481bdd1ac0baef417a32779fb +Author: Øyvind Kolås +Date: Sat Mar 31 14:58:49 2012 +0100 + + extensions: add an extension with some float optimizations + + Alos improve some alpha unpremultiplications in other extensions. + + extensions/Makefile.am | 4 + + extensions/float.c | 324 + ++++++++++++++++++++++++++++++++++++++++++++++ + extensions/gegl-fixups.c | 6 +- + extensions/gggl.c | 3 +- + 4 files changed, 333 insertions(+), 4 deletions(-) + +commit f8d49962299cba7dc719c63c78b0dbd9b65678a5 +Author: Øyvind Kolås +Date: Sat Mar 31 14:58:16 2012 +0100 + + base/util.h change define used in include guards + + babl/base/util.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit fe553b82d2bf2ce5a76a571cedb4b1e0389cfc99 +Author: Øyvind Kolås +Date: Sat Mar 31 03:47:06 2012 +0100 + + use optimized powf for x^(1.0/2.4) + + babl/base/util.h | 17 +++++++++++++++++ + 1 files changed, 17 insertions(+), 0 deletions(-) + +commit d36119a4f79dd174fd762bfa6761cb0743b6753f +Author: Øyvind Kolås +Date: Sat Mar 31 03:44:45 2012 +0100 + + reorder loops of reference premul + + babl/base/model-rgb.c | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +commit 8f2e1e3c18299b0f522727d894ab53d7c92304ed +Author: Øyvind Kolås +Date: Sat Mar 31 02:50:43 2012 +0100 + + use sse conversions also for gamma corrected data + + extensions/sse-fixups.c | 30 ++++++++++++++++++++++++++++++ + 1 files changed, 30 insertions(+), 0 deletions(-) + +commit a3c5cb397632dc92cec8bde020173720f18f0210 +Author: Øyvind Kolås +Date: Fri Mar 30 00:37:00 2012 +0100 + + post release version bump to 0.1.9 + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + commit 21d823b676c7785bf555f913d5cc04ff0fca3e8b Author: Øyvind Kolås Date: Fri Mar 30 00:33:09 2012 +0100 diff --git a/ChangeLog.pre-0-1 b/ChangeLog.pre-0-1 deleted file mode 100644 index a81c443..0000000 --- a/ChangeLog.pre-0-1 +++ /dev/null @@ -1,3345 +0,0 @@ -=========================== 0.1.0 released ============================= - -2009-05-20 Martin Nordholts - - * configure.ac: Bump version to 0.1.0 and make sure the link name - remains `babl-0.0'. - -2009-05-20 Martin Nordholts - - * docs/Makefile.am: Also add .libs directories to the BABL_PATHs - so that e.g. the BablFishPath introspection chart is properly - generated when doing a build, at least on Linux. - -2009-05-20 Martin Nordholts - - * docs/index-static.html.in: Convert SVN references to git - -2009-05-19 Martin Nordholts - - Update for 0.1.0 release. - - * AUTHORS - * NEWS - -2009-05-16 Hubert Figuiere - - Add extern "C" to the header for C++ friendliness. - - * babl/babl.h - -2009-04-04 Martin Nordholts - - Bug 568576 – [PATCH] undefined operation fix - - Patch from Stanislav Brabec - - * babl/babl-fish-stats.c - * tests/babl_fish_path_fitness.c - -2009-04-04 Martin Nordholts - - * AUTHORS: Update for 0.1.0 release. - -2009-04-04 Martin Nordholts - - * extensions/Makefile.am: extensions: util.h is part of the - source. make distcheck passes now. - -2009-04-04 Martin Nordholts - - * babl/Makefile.am: Add forgotten header files that needs to be - distributed with a release. - -2009-04-04 Martin Nordholts - - * Makefile.am: We don't have a COPYING.LESSER anymore - -2009-04-03 Martin Nordholts - - * NEWS: Updated for 0.1.0 - -2009-03-31 Martin Nordholts - - * babl/babl-internal.h: Patch from Gary V. Vaughan. Avoid the need - for define __func__ "unknown" on some vendor compilers - -2009-03-31 Martin Nordholts - - * configure.ac: Patch from Gary V. Vaughan. Don't try to pass gcc - flags to vendor compilers - -2009-03-25 Martin Nordholts - - Patch from Gary V. Vaughan. Rewrite xml-insert.sh in portable - bourne-shell - - * docs/Makefile.am - * docs/tools/xml_insert.sh - -2009-03-25 Martin Nordholts - - Patch from Gary V. Vaughan. Don't use depecrated features or - reduntant declarations in Makefile.am - - * babl/Makefile.am - * babl/base/Makefile.am - * docs/Makefile.am - * tests/Makefile.am - -2009-03-25 Martin Nordholts - - Patch from Gary V. Vaughan. Support hpux use of shl load/unload - and dsos with .sl suffixes - - * babl/babl-extension.c - * configure.ac - * extensions/Makefile.am - * tests/Makefile.am - -2008-03-27 Kevin Cozens - - * configure.ac: - * docs/graphics/Makefile.am: Applied patch from Matteo 'Peach' - Pescarin which makes build use rsvg binary instead of inkscape - to create pngs. Fixes bug 571516. - -2009-03-26 Manish Singh - - * configure.ac: BABL_VARIADIC_MACROS needs to be called before - the libtool stuff (which implicitly calls AC_PROG_CXX) - -2009-03-25 Martin Nordholts - - Patch from Gary V. Vaughan. NULL-statements caused by trailing - commas are non-portable. - - * babl/base/type-u16.c - * babl/base/type-u32.c - * babl/base/type-u8.c - * extensions/CIE-Lab.c - -2009-03-25 Martin Nordholts - - Apply patch from Gary V. Vaughan that adds configure time checks - for variadic macros and adapts the definitions of such macros - in-code accordingly so that babl can be compiled on more - platforms. - - * acinclude.m4 - * babl/babl-internal.h - * configure.ac - -2009-03-25 Martin Nordholts - - * babl/babl-fish.c: Patch from Gary V. Vaughan. Some vendor - compilers can't compile non-constant elements of compound struct - initializers - -2009-03-25 Martin Nordholts - - Patch from Gary V. Vaughan. Some vendor C compilers choke on C++ - comments. - - * babl/babl-fish-path.c - * babl/babl-fish-stats.c - * babl/base/model-rgb.c - * babl/base/rgb-constants.h - * tests/babl_fish_path_fitness.c - -2009-03-25 Martin Nordholts - - * babl/babl-cpuaccel.h: Patch from Gary V. Vaughan. enum values - must be less than INT_MAX (sign bit is illegal) - -2009-03-25 Martin Nordholts - - * babl/babl-ids.h: Patch from Gary V. Vaughan. Remove trailing - comma in enum declaration. - -2009-03-25 Martin Nordholts - - Apply patch from Gary V. Vaughan that includes config.h in some - files that missed it. - - * babl/base/conversions-type.c - * babl/base/model-cmyk.c - -2009-02-24 Sven Neumann - - * */*.c: based on a patch from Gary V. Vaughan, include "config.h" - before any other header file from all .c files. - - * babl/babl-internal.h - * extensions/util.h: instead of including config.h from here, bail - out if it wasn't included beforehand. - -2009-02-20 Martin Nordholts - - * babl/babl.h: Include headers in babl.h as system headers - -2009-01-26 Sven Neumann - - * babl/babl.h - * babl/babl-format.c: renamed babl_format_get_num_of_components() - to babl_format_get_n_components(). - (babl_format_has_alpha): changed accordingly. - -2009-01-24 Martin Nordholts - - Do a complete overhaul of the babl API. - - * babl/babl.h: Instead of including subsystem headers, declare the - functions part of the API directly in the header. The public - types, macros and the version header is still pulled in as - includes but with inclusion guards that prevent them from being - included separately by clients. Notable things removed from the - API is internal class functions and the class instance structs. - - (babl_format_has_alpha) - (babl_format_get_bytes_per_pixel) - (babl_format_get_num_of_components) - (babl_format_get_type): New getters to allow the Babl union to - become opaque for clients. - - * babl/babl-types.h: New file with public types. Currently only - the opaque Babl union and the linear and planar conversion - function prototypes (which are not used in the API due to the use - of varags but still part of the API for reference) are there. Make - sure it's only included indirectly through babl.h. - - * babl/babl-macros.h - * babl/babl-version.h.in: Make sure these are not included - directly, only indirectly through babl.h. - - * babl/babl-main.h: Removed, function declarations are in babl.h - now. - - * babl/babl-internal.h: Include the headers we now consider - internal, mostly the different class headers. - - * babl/babl-class.h: The "named class" function declarations are - now in the public header so move them away from this internal - header. - - * babl/babl-image.h - * babl/babl-format.h - * babl/babl-fish.h - * babl/babl-extension.h - * babl/babl-conversion.h - * babl/babl-component.h - * babl/babl-classes.h - * babl/babl-introspect.h - * babl/babl-sampling.h - * babl/babl-model.h - * babl/babl-type.h: Adapt to above changes, move relevant things to babl.h - - * babl/base/formats.c - * babl/base/model-gray.c - * babl/base/model-rgb.c - * babl/base/model-ycbcr.c - * babl/base/type-float.c: Explicitly #include "babl-classes.h". - - * babl/babl-internal.c: s/babl_name/babl_get_name/ - - * babl/babl-format.c - (babl_format_has_alpha) - (babl_format_get_bytes_per_pixel) - (babl_format_get_num_of_components) - (babl_format_get_type): Implement these. - - * babl/Makefile.am: Don't install the now internal headers and - add, remove and install the other headers according to above - changes. - -2009-01-18 Martin Nordholts - - Since babl_foo_from_id() will not be part of the public API we can - revert to having the short variant babl_foo() instead of - babl_foo_from_name(). - - * babl/babl-class.h - * babl/babl-component.h - * babl/babl-conversion.c - * babl/babl-conversion.h - * babl/babl-extension.h - * babl/babl-fish-path.c - * babl/babl-fish.c - * babl/babl-format.c - * babl/babl-format.h - * babl/babl-image.c - * babl/babl-internal.h - * babl/babl-model.c - * babl/babl-model.h - * babl/babl-type.c - * babl/babl-type.h - * extensions/CIE-Lab.c - * extensions/frequency.c - * extensions/gegl-fixups.c - * extensions/gggl-lies.c - * extensions/gggl.c - * extensions/gimp-8bit.c - * extensions/naive-CMYK.c - * extensions/sse-fixups.c - * tests/grayscale_to_rgb.c - * tests/rgb_to_bgr.c - * tests/rgb_to_ycbcr.c - -2009-01-18 Martin Nordholts - - Add include guards. - - * babl/babl-component.h - * babl/babl-conversion.h - * babl/babl-extension.h - * babl/babl-fish.h - * babl/babl-format.h - * babl/babl-image.h - * babl/babl-model.h - * babl/babl-sampling.h - * babl/babl-type.h - -2009-01-18 Martin Nordholts - - * babl/babl-db.h: Namespace the include guard. - -2009-01-18 Martin Nordholts - - Do a s/babl_destroy/babl_exit since 'destroy' is better paired - with a 'create' and other libraries also use the 'init'/'exit' - pair, including GEGL. Keep a define for babl_destroy unless - BABL_DISABLE_DEPRECATED is defined. - - * babl/babl-main.h - * babl/babl.c - * tests/babl-html-dump.c - * tests/babl_class_name.c - * tests/babl_fish_path_dhtml.c - * tests/babl_fish_path_fitness.c - * tests/conversions.c - * tests/formats.c - * tests/grayscale_to_rgb.c - * tests/introspect.c - * tests/models.c - * tests/nop.c - * tests/rgb_to_bgr.c - * tests/rgb_to_ycbcr.c - * tests/sanity.c - * tests/srgb_to_lab_u8.c - * tests/types.c - -2009-01-18 Martin Nordholts - - * babl/babl-classes.h: New file collecting the type constants, - includes and the union for the babl classes. When adding a new - class this is the only installed header file that requires - modification. - - * babl/babl-class.h: Move the class type enums to the new file. - - * babl/babl.h: Include babl-classes.h instead of each class on its - own, and move the Babl union to the new file. - - * babl/Makefile.am: Add the new file. - -2009-01-18 Sven Neumann - - * babl/babl-component.h - * babl/babl-conversion.h - * babl/babl-extension.h - * babl/babl-format.h - * babl/babl-model.h - * babl/babl-type.h: allow to disable the defines that were added - for backward compatibility by definining BABL_DISABLE_DEPRECATED. - - * babl/babl-image.h: removed trailing whitespace. - -2009-01-17 Martin Nordholts - - Add #define babl_foo babl_foo_from_name macros, that should fix - most builds that broke due to the below refactoring. - - * babl/babl-component.h - * babl/babl-conversion.h - * babl/babl-extension.h - * babl/babl-format.h - * babl/babl-model.h - * babl/babl-type.h - -2009-01-17 Martin Nordholts - - s/babl_image/babl_image_new/ - - * babl/babl-fish-reference.c - * babl/babl-image.c - * babl/babl-image.h - -2009-01-17 Martin Nordholts - - s/babl_foo_init/babl_foo_class_init/ - s/babl_foo_destroy/babl_foo_class_destroy/ - s/babl_foo_each/babl_foo_class_for_each/ - s/babl_foo/babl_foo_from_name/ - s/babl_foo_id/babl_foo_from_id/ - - * babl/babl-class.h - * babl/babl-conversion.c - * babl/babl-core.c - * babl/babl-fish-path.c - * babl/babl-fish-reference.c - * babl/babl-fish-stats.c - * babl/babl-fish.c - * babl/babl-format.c - * babl/babl-image.c - * babl/babl-internal.h - * babl/babl-introspect.c - * babl/babl-model.c - * babl/babl-sampling.c - * babl/babl-sanity.c - * babl/babl-type.c - * babl/babl.c - * babl/base/formats.c - * babl/base/model-gray.c - * babl/base/model-rgb.c - * babl/base/model-ycbcr.c - * babl/base/type-float.c - * babl/base/type-u16.c - * babl/base/type-u32.c - * babl/base/type-u8.c - * extensions/CIE-Lab.c - * extensions/frequency.c - * extensions/gegl-fixups.c - * extensions/gggl-lies.c - * extensions/gggl.c - * extensions/gimp-8bit.c - * extensions/naive-CMYK.c - * extensions/sse-fixups.c - * tests/babl-html-dump.c - * tests/babl_fish_path_fitness.c - * tests/conversions.c - * tests/formats.c - * tests/grayscale_to_rgb.c - * tests/models.c - * tests/rgb_to_bgr.c - * tests/rgb_to_ycbcr.c - * tests/types.c - -2009-01-17 Martin Nordholts - - * babl/babl-class.h: Remove babl_name() and babl_introspect() - which slipped in here. - -2009-01-17 Martin Nordholts - - * babl/babl.h: Don't #include - - * babl/base/formats.c - * babl/base/model-gray.c - * babl/base/model-rgb.c - * extensions/gegl-fixups.c - * extensions/sse-fixups.c: #include - -2009-01-17 Martin Nordholts - - Make babl.h look clean. - - * babl/babl-introspect.h: New installed header for babl_name() and - babl_introspect(). - - * babl/babl.h: Include it. - - * babl/Makefile.am: Add it. - -2009-01-17 Martin Nordholts - - * babl/babl-internal.h: Formating. - -2009-01-17 Martin Nordholts - - * babl/babl-class.h: New installed header file containing class - and typesystem definitions and types. - - * babl/babl.h: Include it. - - * babl/Makefile.am: Add it. - -2009-01-17 Martin Nordholts - - * babl/babl.h: Move up forward declaration of BablList. - - * babl/babl-list.h: Completely rely on that declaration. - -2009-01-17 Martin Nordholts - - * babl/babl.h: Don't have BABL_ALPHA_THRESHOLD public yet. - - * babl/base/util.h: Put it here for now instead. - -2009-01-17 Martin Nordholts - - Instead of having BABL_CLASS() plus variants and making the macros - expand to different things depending on if they are used in a - header or a .c file, have two versions: BABL_CLASS_DECLARE() and - BABL_CLASS_IMPLEMENT(). This enables further refactorisation of - the babl.h header. - - * babl/babl.h: Do the name changes and remove the unpleasant - #undefs at the bottom. - - * babl/babl-internal.h: Do the name changes. - - * babl/babl-component.[ch] - * babl/babl-conversion.[ch] - * babl/babl-extension.[ch] - * babl/babl-fish.[ch] - * babl/babl-format.[ch] - * babl/babl-image.h - * babl/babl-model.[ch] - * babl/babl-sampling.h - * babl/babl-type.[ch]: Adjust to changes. - -2009-01-17 Martin Nordholts - - Don't redeclare functions declared with the BABL_CLASS() or - BABL_NAMED_CLASS() macros. - - * babl/babl-component.h - * babl/babl-conversion.h - * babl/babl-extension.h - * babl/babl-fish.h - * babl/babl-format.h - * babl/babl-image.h - * babl/babl-model.h - * babl/babl-sampling.h - * babl/babl-type.h - -2009-01-17 Martin Nordholts - - * babl/babl-main.h: New installed file with babl_init() and - babl_destroy() declarations. - - * babl/babl.h: Include it. - - * babl/Makefile.am: Add it. - -2009-01-17 Martin Nordholts - - * babl/babl-macros.h: New installed header file that contains - portability macros. - - * babl/babl.h: Include it and don't define portability macros - here. - - * babl/Makefile.am: Add it. - -2009-01-15 Martin Nordholts - - * babl/babl.h: Make BablClassType an int again, it doesn't make - sense as an enum as the set of class types is not a natural - predefined set. - -2009-01-14 Martin Nordholts - - * babl/babl.h: Make BablClassType an enum instead of an unsigned - int contaning enum values. - -2009-01-14 Martin Nordholts - - * babl/babl.h: Use a lowercase 'a' in 0xbab100. - -2009-01-14 Martin Nordholts - - * babl/babl.h: Don't document forward declarations and move them - down a bit to make them less eminent. - -2009-01-14 Martin Nordholts - - * babl/babl.h - * babl/babl-internal.h: Remove BABL_HARD_MAX_PATH_LENGTH from - here, it's only for internal use. - - * babl/babl-fish-path.c: #define BABL_HARD_MAX_PATH_LENGTH locally - here. - -2009-01-14 Martin Nordholts - - * babl/babl.h (BABL_ALPHA_THRESHOLD): Instead of an arbitrary - threshold, use one hundredth of the channel intensity resolution - when using 16 bit integers i.e. 0.01 / (2^16 - 1). - -2008-12-08 Martin Nordholts - - * babl/babl-internal.h (babl_assert): Don't just eek when an - assertion fails, also say exactly what failed. - -2008-11-16 Øyvind Kolås - - * babl/babl-fish-stats.c: (legal_error), (each_conv): show in red the - conversions that are worse than the current BABL_TOLERANCE instead of - the earlier arbitrary 0.01. - -2008-11-16 Martin Nordholts - - * babl/babl-fish-path.c: Use the default babl tolerance level if - BABL_TOLERANCE is the empty string so that we don't get a - tolerance level of 0.0 in that case. - -2008-11-16 Martin Nordholts - - * babl/babl.h: Add #define BABL_ALPHA_THRESHOLD which is the alpha - threshold used in the reference implementation for - un-pre-multiplication of color data. - - * babl/base/model-rgb.c - * babl/base/model-gray.c - * extensions/gegl-fixups.c: Use the define, a consistent alpha - threshold improves accurucy of conversions. - -2008-11-16 Martin Nordholts - - * extensions/gegl-fixups.c (conv_rgbAF_sdl32) - * babl/base/model-gray.c (premultiplied_to_non_premultiplied): - Make un-pre-multiplication with close-to-zero alpha values result - in complete black instead of a bit brigher than black. - -2008-11-08 Øyvind Kolås - - * extensions/gegl-fixups.c: (conv_rgbAF_lrgba8): use the lookup tables - to speed up the conversion 8still error of 0.002677 though). - -2008-11-06 Øyvind Kolås - - * extensions/gegl-fixups.c: (conv_rgbAF_rgbaF), - (conv_rgbAF_lrgba8): make all components 0.0 when alpha < 0.00001. - -2008-11-04 Øyvind Kolås - - * extensions/gegl-fixups.c: (conv_rgbAF_rgbaF), - (conv_rgbAF_lrgba8), (init): added some more missing conversions. - -2008-11-04 Øyvind Kolås - - * extensions/gegl-fixups.c: (conv_rgbaF_rgbAF), (init): added missing, - needed conversion. - -2008-10-01 Øyvind Kolås - - * COPYING.LESSER: renamed to .. - * COPYING: - -2008-07-09 Sven Neumann - - * babl/base/Makefile.am: `:='-style assignments are not portable - -2008-07-04 Sven Neumann - - * extensions/Makefile.am: also use AM_CPPFLAGS and CPPFLAGS for - building sse-fixups. - -2008-07-01 Øyvind Kolås - - * babl/babl-cpuaccel.c: added typedef size_t gsize to the set of - gtypes lifted from glib. spotted by Marianne Gagnon. - -2008-07-01 Øyvind Kolås - - * extensions/Makefile.am: applied patch from dmacks at netspace.org - cleaning up some of the build system. - -2008-06-28 Zhang Junbo - - * extensions/frequency.c: changed RrRiG... back to RrGrBrArRiGiBiAi. - -2008-06-27 Zhang Junbo - - * extensions/frequency.c: some work on frequency_to_rgba. - -2008-06-27 Zhang Junbo - - * extensions/frequency.c: implemented frequency_to_rgba. - -2008-06-22 Zhang Junbo - - * extensions/frequency.c: changed RrGrBr... into RrRiGrGiBrBiArAi. - -2008-06-22 Zhang Junbo - - * extensions/frequency.c: added the format "frequency double". - -2008-06-16 Sam Hocevar - - * Makefile.am: ensure that the "w3m must be available" message is - properly displayed: dist-hook is only called after builddir is filled. - -2008-06-13 Øyvind Kolås - - * extensions/frequency.c: added dummy model "frequency" and dummy - format "frequency float" to be used purely for creating, storing, - accessing but not converting to and from normal tristimulus spaces. - can be used by GeglBuffer to create frequency domain buffers that - are processed in a similar manner to normal buffers. - -2008-06-12 Øyvind Kolås - - * configure.ac: post release increment of version to 0.0.23 - -=========================== 0.0.22 released ============================= - -2008-06-12 Øyvind Kolås - - * configure.ac: incremented version. - -2008-06-12 Øyvind Kolås - - * docs/index-static.html.in: moved the babl directory overview here - from the GEGL site. - -2008-06-12 Øyvind Kolås - - * docs/index-static.html.in: fixed indentation and misplaced ' spotted - by Jan Heller. - -2008-06-12 Øyvind Kolås - - * docs/index-static.html.in: moved the BABL_TOLERANCE documentation - paragraph in under Environment heading. - -2008-06-12 Øyvind Kolås - - * docs/index-static.html.in: removed markup mistake that introduced - horizontal scrolling in gecko. - -2008-06-12 Øyvind Kolås - - * babl/babl-fish-path.c: (legal_error): s/BABL_TOLERANCE/ - * docs/index-static.html.in: s/BABL_ACCURACY/BABL_TOLERANCE/ - -2008-06-12 Øyvind Kolås - - * babl/babl-fish-path.c: (legal_error): s/BABL_ERROR/BABL_ACCURACY/ - * docs/index-static.html.in: s/BABL_ERROR/BABL_ACCURACY/ - - * AUTHORS: added a missing space. - -2008-06-12 Øyvind Kolås - - * NEWS: added a html comment shortening the news shown. - * docs/index-static.html.in: assed link to changelog in svn after - news. Updated urls with s/viewcvs/viewvc/. - -2008-06-12 Øyvind Kolås - - * Makefile.am: added TODO - * docs/index-static.html.in: moved TODO list from here - * TODO: to here, also edited it a bit. - * docs/Makefile.am: include TODO in result. - -2008-06-12 Øyvind Kolås - - * docs/index-static.html.in: reindented code, documented BABL_ERROR. - -2008-06-12 Øyvind Kolås - - * AUTHORS: updated. - * NEWS: updated. - * docs/index-static.html.in: improved introduction and feature list. - -2008-06-12 Jan Heller - - * extensions/sse-fixups.c (conv_rgbaF_linear_rgb8_linear), - (conv_rgbaF_linear_rgba8_linear): Added fallback non-SSE routine - if the input buffer is not aligned to 16 bytes. - -2008-06-05 Jan Heller - - * AUTHORS: Updated contact info. - -2008-06-03 Jan Heller - - * INSTALL.in: Updated download link. - -2008-06-03 Jan Heller - - babl_get_version () moved into separate source file. - - * babl/Makefile.am: Added babl-version.c. - * babl/babl-version.c (babl_get_version): Implemented. - * babl/babl-version.h.in: Added babl_get_version () declaration. - * babl/babl.c (babl_destroy): Removed babl_get_version (). - * babl/babl.h: Removed babl_get_version () declaration. - -2008-06-03 Jan Heller - - * babl/babl-version.h.in: Added. - -2008-06-03 Jan Heller - - Added babl_get_version () to the public API. - - * babl/Makefile.am: Added babl-version.h to library_include_HEADERS. - * babl/babl-version.h.in: Added macros to expand to babl version - information. - * babl/babl.c (babl_get_version): Implemented. - * babl/babl.h: Include babl-version.h, declare babl_get_version (). - * configure.ac: Added babl-version.h to AC_CONFIG_FILES. - -2008-05-23 Jan Heller - - * extensions/sse-fixups.c (init): Fixed conditionally compiled code. - -2008-05-23 Jan Heller - - Added support for CPU acceleration, RGBA float -> RGB u8 and - RGBA float -> RGBA u8 SSE accelerated conversions. - - * babl/Makefile.am: Added babl-cpuaccel.[ch]. - * babl/babl-cpuaccel.h: - * babl/babl-cpuaccel.c (babl_cpu_accel_get_support), - (babl_cpu_accel_set_use), (arch_get_vendor), (arch_accel_intel), - (arch_accel_amd), (arch_accel_centaur), (arch_accel_cyrix), - (sigill_handler), (arch_accel_sse_os_support), (arch_accel), - (cpu_accel): Runtime CPU detection code. Ported from GIMP. - * babl/babl-internal.h: Include babl-cpuaccel.h. - * babl/babl-memory.c (babl_malloc): Make babl_malloc align memory to - BABL_ALIGN==16 boundaries. - * babl/babl.c (babl_init): Enabled CPU acceleration. - * configure.ac: Added compile time MMX/SSE/AltiVec detection. Ported - from GIMP. - * extensions/Makefile.am: Added SSE_EXTRA_CFLAGS for sse-fixups.c - compilation. - * extensions/sse-fixups.c (conv_rgbaF_linear_rgb8_linear), - (conv_rgbaF_linear_rgba8_linear), (init): Added RGBA float -> RGB u8 - and RGBA float -> RGBA u8 SSE accelerated conversions. - -2008-05-22 Jan Heller - - * extensions/util.h: changed fallback macro to have the - same return type as rint(). - -2008-05-21 Sven Neumann - - * babl/babl-internal.h (rint): changed fallback macro to have the - same return type as rint(). - -2008-05-21 Jan Heller - - * babl/babl-internal.h: - * babl/base/type-u16.c: - * babl/base/type-u32.c: - * babl/base/type-u8.c: - * extensions/CIE-Lab.c: - * extensions/gegl-fixups.c: - * extensions/gggl-lies.c: - * extensions/gggl.c: - * extensions/gimp-8bit.c: - * extensions/util.h: fallback to floor function when rint function - is not available. - - * configure.ac: added check for rint function. - -2008-05-20 Jan Heller - - * extensions/gimp-8bit.c (conv_rgbaF_linear_rgb8_linear), - (conv_rgbaF_linear_rgba8_linear), (init): added naive versions - of respective conversions. - -2008-05-14 Sven Neumann - - * babl/babl-format.c (format_new): initialize format.visited. - - * babl/babl-format.h - * babl/babl-fish-path.c: formatting. - -2008-04-16 Sven Neumann - - * babl/babl.h: formatting. - -2008-04-16 Øyvind Kolås - - * babl/babl.h: split up into ... - Separate header files. - - * babl/babl-component.h: - * babl/babl-conversion.h: - * babl/babl-extension.h: - * babl/babl-fish.h: - * babl/babl-format.h: - * babl/babl-image.h: - * babl/babl-model.h: - * babl/babl-sampling.h: - * babl/babl-type.h: - - * babl/Makefile.am: install new headers. - -2008-04-15 Øyvind Kolås - - * babl/Makefile.am: removed babl-classes.h - * babl/babl-classes.h: removed and mostly folded into ... - * babl/babl.h: .. this file, which has been reorganized to contain - each separate class by itself. - * babl/babl-internal.h: simplified code renamed BABL_CLASS_TEMPLATE to - be just BABL_CLASS or BABL_CLASS_MINIMAL. - - * babl/babl-fish.c: (babl_fish): do not accept varargs, use use - BABL_CLASS_MINIMAL. - - * babl/babl-component.c: - * babl/babl-conversion.c: - * babl/babl-extension.c: - * babl/babl-format.c: - * babl/babl-model.c: - * babl/babl-type.c: use BABL_CLASS instead of BABL_CLASS_TEMPLATE - - * babl/babl-hash-table.h: - * babl/babl-list.h: - * babl/babl-db.h: changed include warning since babl-classes doesn't - exist anymore. - -2008-04-15 Sven Neumann - - * extensions/util.h - * babl/*.[ch]: removed trailing whitespace. - -2008-04-15 Sven Neumann - - * babl/babl-fish-path.c (init_path_instrumentation): this function - has no return value, declare it as void. - -2008-04-13 Øyvind Kolås - - Applied patch from Jan Heller. - - * babl/babl-fish-path.c: (get_conversion_path), (babl_fish_path), - (test_create), (init_path_instrumentation), - (destroy_path_instrumentation), (get_path_instrumentation): Improved - fish path instrumentation during the search for a new one to optimize - for speed. Added logic to disallow creation of a fish path that is - actually slower than appropriate reference fish. - - * babl/babl-util.[ch]: (babl_process_cost): New function for unified - timing formula for babl processings. - - * babl/babl-conversion.c: (babl_conversion_error): Make use of the - new babl_process_cost function. - - * extensions/gimp-8bit.c: Added a function declaration to prevent - compiler warning. - -2008-04-08 Øyvind Kolås - - Applied patch from Jan Heller that improves logic of go_fishing code - in babl-fish.c. The current code searches list of all fishes while - looking for suitable preexistent BABL_FISH_PATH instance. The new code - only searches relevant part of database's hash table. Further, the - current code searches for fish path every time such a babl fish is - requested, even though the same fish path has been requested before - and not found. The new code creates dummy BABL_FISH instance with - appropriate source/destination formats and inserts it into the fish - database to indicate that fish path has been searched for and not - found. - - * babl/babl-fish.c: (find_fish_path), (find_memcpy_fish), - (babl_fish_get_id), (babl_fish): - * babl/babl-fish-path.c: (babl_fish_path): - * babl/babl-fish-reference.c: (babl_fish_reference): - * babl/babl-fish-simple.c: (babl_fish_simple): - * babl/babl-internal.h: - -2008-04-06 Sven Neumann - - * acinclude.m4: new file defining BABL_DETECT_CFLAGS() macro. - - * configure.ac: set CFLAGS to get some extra compiler warnings. - - * babl/babl-fish-stats.c (conversions): fixed old-style function - definition. - - * Makefile.am: formatting. - -2008-04-02 Mukund Sivaraman - - Sparse fixes. - - * babl/babl-internal.h: fflush() takes pointer. - - * babl/babl-conversion.c: Don't mix code and declarations. - - * babl/babl-fish-reference.c: Fixed array assignment. - -2008-04-03 Øyvind Kolås - - Applied patch from Jan Heller that ports BablFishPath class to the new - list API and the list API is a bit expanded. Further, the algorithm - for generating the shortest conversion path is reformulated to be more - readable and comprehensible and thoroughly commented. The algorithm - for processing the conversion paths is reformulated and commented. - Also contains minor readability cleanups and speedups. - - * babl/babl-classes.h: - * babl/babl-conversion.c: - * babl/babl-db.c: - * babl/babl-fish-path.c: - * babl/babl-fish-stats.c: - * babl/babl-fish.c: - * babl/babl-list.c: - * babl/babl-list.h: - * tests/babl_fish_path_fitness.c: - -2008-04-01 Øyvind Kolås - - * babl/babl-classes.h: - * babl/babl-conversion.c: - * babl/babl-db.c: - * babl/babl-fish-path.c: - * babl/babl-fish.c: - * babl/babl-format.c: - * babl/babl-internal.h: - * babl/babl-introspect.c: - * babl/babl-list.c: - * babl/babl-list.h: - * babl/babl-model.c: - * babl/babl-sampling.c: - * babl/babl-sanity.c: - * babl/babl-type.c: - * babl/babl-util.[ch]: applied patch from Jan Heller that improves - readability by using the newly introduced BablList structure. - -2008-03-31 Sven Neumann - - * AUTHORS: added Jan Heller and obfuscated the email addresses. - -2008-03-29 Sven Neumann - - * babl/babl-component.c - * babl/babl-conversion.c - * babl/babl-db.c - * babl/babl-extension.c - * babl/babl-fish-path.c - * babl/babl-fish-reference.c - * babl/babl-fish-simple.c - * babl/babl-format.c - * babl/babl-model.c - * babl/babl-type.c: applied patch from Jan Heller that changes the - code to test for a pre-existent instance of a babl class in the - database before creating a new one. - -2008-03-24 Tor Lillqvist - - * babl/babl-type.c: Make the "test" array static. - -2008-03-23 Martin Nordholts - - * babl/babl-memory.[ch]: typedef:ed BABL free and malloc function - pointers. - -2008-03-22 Sven Neumann - - Applied patch from Jan Heller that introduces list and hash table - functionality and changes the babl database to use coalesced - hashing (bug #523507). This considerably improves BABL - performance. - - * babl/Makefile.am - * babl/babl-list.[ch] - * babl/babl-hash-table.[ch]: new files providing list and hash - table functionality. - - * babl/babl-internal.h: include the new header files. - - * babl/babl-db.[ch]: use the new code. - - * babl/babl-fish.c: changed accordingly. - -2008-03-16 Mukund Sivaraman - - * babl/babl-extension.c: getenv() can return NULL. - - * babl/babl-memory.c: Check for NULL in babl_strcat(). - -2008-03-16 Mukund Sivaraman - - * babl/babl-image.c: Added missing va_end()s. - -2008-03-16 Mukund Sivaraman - - * babl/babl-extension.c: Added missing dlclose()s. - -2008-03-02 Øyvind Kolås - - * babl.pc.in: do not add @DL_LIBS@ to link line of babl. - -2008-03-02 Øyvind Kolås - - * tests/Makefile.am: applied patch from dmacks@netspace.org for - bug #519794. - -2008-03-02 Øyvind Kolås - - Applied patch from dmacks@netspace.org closing bug #519796 - * configure.ac: - * babl/Makefile.am: - * tests/Makefile.am: Only -ldl if required, passed automatically via - $LIBS - -2008-02-27 Øyvind Kolås - - * configure.ac: post release version increment to 0.0.21 - -=========================== 0.0.20 released ============================= - -2008-02-27 Øyvind Kolås - - * NEWS: updated for 0.0.20 release. - * configure.ac: incremented version. - -2008-02-27 Øyvind Kolås - - * docs/Makefile.am: use mktemp instead of tempfile. - -2008-02-27 Øyvind Kolås - - * extensions/Makefile.am: -I$(top_builddir) to be able to include - config.h - -2008-02-19 Sven Neumann - - * babl/babl-fish-path.c (test_create): add some extra pixels - outside the valid range to fix issues with wrong clamping of - conversions. - -2008-02-19 Sven Neumann - - * babl/babl-fish-path.c: renamed test_pixels to num_test_pixels. - -2008-02-19 Sven Neumann - - * babl/babl-fish-path.c (test_create): reverted previous change as - it introduces the risk of not testing any values between 0.0 and 1.0. - -2008-02-19 Øyvind Kolås - - * babl/babl-fish-path.c: (test_create): make the testbuffer contain - values in the range -0.25 .. 1.75 instead of 0.0 .. 1.0, might fix - issues with wrong clamping of float->8bit conversions. - -2008-02-15 Øyvind Kolås - - * configure.ac: cleaned up win32 detection vs plug-in compilation - specifics, added DYNAMICLIB paramter for gcc which defaults to -shared - for win32 and -dynamiclib for darwin. - * extensions/Makefile.am: use $(DYNAMICLIB) instead of -shared. - -2008-02-11 Kevin Cozens - - * configure.ac: Set shrext to ".dylib" for Darwin (ie. Mac OS). - - * babl/babl-extension.c: Use BABL_DIR_SEPARATOR instead of "/". - -2008-01-22 Sven Neumann - - * extensions/gimp-8bit.c (u8_gamma_2_2_to_float_linear): use the - correct lookup table. - -2008-01-20 Øyvind Kolås - - Always use BablFishPath's for accepted conversions. The path - construction code is the location of the regression test, an - earlier (now unneeded) optimization allowed using the first - and best conversion available. The (not in bugzilla afair) bug - manifest by this depended on the order of .so's on the file system - to manifest itself. - - * babl/babl-fish.c: (go_fishing): only accepts paths when we go - fishing for existing conversions. - (babl_fish): elaborated a comment about why we avoid shortcut - conversions and only paths. - -2008-01-17 Øyvind Kolås - - Applied patch from Deji Akingunola to make babl - correctly pick up the path to the extensions on 64bit systems. Fixes - bug #510038 - - * babl/Makefile.am: added -DLIBDIR - * babl/babl-extension.c: use libdir and not PREFIX "/lib" when - defining the default BABL_PATH. - -2008-01-10 Sven Neumann - - * extensions/gimp-8bit.c: added extension to speed up code paths - that are executed by the GIMP/GEGL hybrid. So far only 8bit to - float conversions are handled. - -2008-01-10 Sven Neumann - - * extensions/Makefile.am: extended CFLAGS so that config.h can be - included. - - * extensions/*.c: fixed up includes. - - * extensions/gegl-fixups.c: use linear <-> gamma conversions from - base/util.c. - -2008-01-07 Kevin Cozens - - * babl/babl-extension.c (babl_extension_load_dir): Reverted previous - change. BABL hasn't been updated to use gmodule (yet). - -2008-01-07 Kevin Cozens - - * babl/babl-extension.c (babl_extension_load_dir): Use G_MODULE_SUFFIX - instead of a hard-coded suffix. - -2008-01-06 Sven Neumann - - * extensions/CIE-Lab.c: made internal functions static. - -2007-12-30 Sven Neumann - - * extensions/gggl-lies.c (table_init): completely fill the lookup - tables for conversion from float to integer. - -2007-12-30 Kevin Cozens - - * extensions/Makefile.am: Use SHREXT instead of hard-coded ".so". - -2007-12-30 Øyvind Kolås - - * configure.ac: post release version increment to 0.0.19 - -=========================== 0.0.18 released ============================= - -2007-12-30 Øyvind Kolås - - * NEWS: updated for 0.0.18 release - * configure.ac: increased version to 0.0.18 for release. - -2007-12-29 Michael Natterer - - * babl/babl-fish-path.c (chain_contains_fmt): one const was - forgotten. - -2007-12-29 Øyvind Kolås - - * babl/babl.h: - * babl/babl-classes.h: - * babl/babl-fish-path.c: - * babl/babl-fish-reference.c: - * babl/babl-fish.c: - * babl/babl-internal.[ch]: Const'ified code with Babl*'s refering to - formats. - -2007-02-17 Øyvind Kolås - - * configure.ac: post release version increment to 0.0.17 - -=========================== 0.0.16 released ============================= - -2007-02-17 Øyvind Kolås - - * configure.ac: increased version to 0.0.16 for release. - -2007-11-25 Øyvind Kolås - - * babl/babl-image.c: (babl_image_from_linear): do additional casts to - silence warnings from compiler. - -2007-11-25 Øyvind Kolås - - * docs/index-static.html.in: changed documentation to use babl_format - instead of passing naked strings into babl_fish, (both will work, - but using babl_format is a bit saner). - -2007-11-25 Øyvind Kolås - - * NEWS: updated. - * Makefile.am: added COPYING and COPYING.LESSER - * docs/Makefile.am: added COPYING and COPYING.LESSER - -2007-11-13 Øyvind Kolås - - * babl/babl-fish.c: (babl_fish_process): swapped source and - destination around in memcpy. - -2007-11-13 Øyvind Kolås - - * babl/babl-fish.c: (go_fishing): optimized fishing when looking - up existing fish (should perhaps be moved to lists going from given - formats, similar to how conversions are added there instead.) Made - go_fishing accept BABL_FISH_REFERENCE when source and desintation - formats are equal. - (babl_fish_process): removed most of the need for BablImage for - linear buffers, do a memcpy when source and destination formats - are equal (and we're a BABL_FISH_REFERENCE). - * babl/babl-db.[ch]: moved the BablDb struct out into public to - allow faster iteration through it. - -2007-11-11 Øyvind Kolås - - * Modified copyright statement to refer to an URL instead of a civic - address for the Free Software Foundation and the text of the license. - -2007-11-11 Øyvind Kolås - - Keep a cache of the linear version of BablImage's needed for - BablFormats around. This reduces the constant overhead for - conversions. - - * babl/babl-classes.h: added .image_template field to BablFormat. - * babl/babl-format.c: (format_new): make .image_template NULL by - defualt. - * babl/babl-image.c: (babl_image_from_linear): use .image_template if - available instead of creating our own BablImage from scratch. - * babl/babl-memory.c: (babl_free): special case freeing of BablImage - and BablFormat to do the extra juggling needed for the image_template - cache. - -2007-11-10 Øyvind Kolås - - * babl/babl-fish-stats.c: (table_destination_each): improve - visualization of results. - -2007-11-10 Øyvind Kolås - - * babl/babl-db.c: (babl_db_each_inline), (babl_db_exist): Optimized - lookup by adding an inline version of babl_db_each specially for - babl_db_exist. - -2007-11-10 Øyvind Kolås - - Do not accept BABL_FISH_REFERENCE as a valid result when fishing for - existing fishes. - - * babl/babl-fish.c: (fishing_result_examine), (babl_fish): - -2007-11-10 Øyvind Kolås - - * docs/index-static.html.in: documented BABL_STATS environment - variable. - -2007-11-09 Øyvind Kolås - - Upgraded babl from LGPLv2 to LGPLv3. Copyright statements in all files - have been updated to reflect this change, the permission to use leter - versions of the GNU licenses have been retained in all instances.) - - * COPYING: changed to GPLv3 - * COPYING.LESSER: added (LGPLv3's overlay over GPLv3) - -2007-10-30 Michael Schumacher - - * configure.ac: DIR_SEP='\' is evil, use DIR_SEP='\\' instead. - -2007-09-14 Kevin Cozens - - * configure.ac: Define name of babl library file. - - * babl/babl-extension.c: Use name of babl library defined when - ./configure was run. - -2007-09-14 Kevin Cozens - - Changes to let BABL find its extensions at run time when the - BABL_PATH environment variable is not set. - - * configure.ac: Don't specify BABL_PATH in here. Renamed - BABL_LIST_SEPERATOR to BABL_DIR_SEPARATOR. - - * babl/babl-extension.c: Include /lib as part of default BABL_PATH. - Renamed #define's used to specify the path and directory separators. - Use the values from config.h that were set when ./configure was run. - -2007-09-11 Kevin Cozens - - * autogen.sh: Added check for existence of automake-1.10. - Fixes bug #474507. - -2007-09-10 Øyvind Kolås - - * babl/babl-internal.c: (babl_process): return immediately if 0 pixels - were requested to be processed. - -2007-09-01 Øyvind Kolås - - * MAINTAINERS: added. - -2007-08-30 Øyvind Kolås - - Applied patch from Kevin Cozens fixing bug #467652 - - * babl/Makefile.am: Use DL flag set by ./configure instead of - hard-coding it in Makefile - -2007-08-02 Kevin Cozens - - * extensions/gggl.c - * extensions/gggl-lies.c: Only include math.h once. - -2007-08-01 Øyvind Kolås - - Fixed compiler abort on certain LDFLAGS values (-Wl,-z,defs) by - applying patch from christopher taylor, closing bug #462536. - - * babl/Makefile.am: - * extensions/Makefile.am: - -2007-03-21 Øyvind Kolås - - Reindented all of the code using uncrustify. - -2007-03-21 Øyvind Kolås - - * configure.ac: Make force the value of shrext to either .dll or .so - (it seems like it wasn't defined for unixy systems after all). - -2007-03-13 Michael Schumacher - - * configure.ac: use PATHSEP (platform-dependent, defined to ';' on - win32) for BABL_LIST_SEPERATOR - -2007-03-13 Michael Schumacher - - * configure.ac: AC_SUBST and AC_DEFINE $shrext into variables for - Makefiles and source. - * extension/Makefile.am: use $(SHREXT) instead of .$SOext. - * babl/babl-extension.c: use SHREXT instead of a hardcoded ".so" - and get rid of a dirent->d_ino > 0 check which has been there for - reasons unknown. - -2007-03-12 Michael Schumacher - - * Makefile.am: - * extensions/Makefile.am: applied patch by John Marshall to make - babl extensions build on Windows. They do not work yet, though. Fixes - bug #409957. - -2007-03-12 Øyvind Kolås - - * babl/babl-fish.c: (fishing_result_examine), (go_fishing), - (babl_fish): go fishing for an existing fish for the - source/destination combination before trying to create one. - -2007-02-22 Øyvind Kolås - - * babl/babl-classes.h: make _Babl be a typedef and not a union that - gets included and defined for every single object generated. - Fixes bug #409781. - -2007-02-18 Øyvind Kolås - - * configure.ac: post release increment to 0.0.15 - -=========================== 0.0.14 released ============================= - -2007-02-17 Øyvind Kolås - - * configure.ac: increased version to 0.0.14 for release. - -2007-02-17 Øyvind Kolås - - * docs/index-static.html.in: adds, reordering and trimming of - information in webpage. - -2007-02-17 Øyvind Kolås - - * babl/base/model-gray.c: removed obsoleted FIXME. - -2007-02-17 Øyvind Kolås - - * docs/index-static.html.in: reincorporate NEWS, added link to - extensions dir in subversion. - -2007-02-16 Øyvind Kolås - - * babl/babl-fish-path.c: (legal_error), (max_path_length): cache the - values looked up from BABL_ERROR and BABL_PATH_LENGTH environment - variables, changed default maximum conversion path length from 3 to 4. - -2007-02-16 Øyvind Kolås - - * babl/base/formats.c: (babl_formats_init): specify Y'CbCrA model - instead of Y'CbCr for Y'CbCrA float. - -2007-02-15 Øyvind Kolås - - * extensions/gegl-fixups.c: (conv_rgbAF_rgb8): simplified logic - of code to speed it up. - -2007-02-15 Øyvind Kolås - - * babl/base/model-rgb.c: (premultiplied_to_non_premultiplied), - (rgba_gamma_2_2_premultiplied2rgba): avoid divisions by zero, - thus making the reference conversions correct. - -2007-02-11 Øyvind Kolås - - * NEWS: updated news for many versions. - -2007-02-09 Kevin Cozens - - * autogen.sh: Changed CVS reference to SVN. - - * configure.ac: Set BABL_UNSTABLE to 1 for odd micro numbers - when major and minor are both 0. - - * babl.pc.in - * babl/Makefile.am - * tests/Makefile.am: Use version number in library name. - -2007-02-09 Kevin Cozens - - * babl/Makefile.am - * babl/base/Makefile.am - * docs/graphics/Makefile.am: Removed references to .cvsignore. - - * docs/Makefile.am: Removed reference to .cvsignore. Removed - ^M from end of lines. - -2007-01-31 Øyvind Kolås - - Removed .cvsignore files. - -2007-01-07 Øyvind Kolås - - * configure.ac: set version to 0.0.13 - -=========================== 0.0.12 released ============================= - -2007-01-07 Øyvind Kolås - - * configure.ac: set version to 0.0.12 - -2007-01-28 Øyvind Kolås - - * docs/index-static.html.in: things are not in CVS but SVN now. - -2007-01-28 Øyvind Kolås - - * babl/babl-conversion.c: (babl_conversion_new): shut up compiler - warning. - -2007-01-28 Øyvind Kolås - - * extensions/gegl-fixups.c: (init): give names to the custom formats. - -2007-01-28 Øyvind Kolås - - * AUTHORS: added Michael Natterer as janitor. - -2007-01-28 Øyvind Kolås - - * AUTHORS: added Tim Mooney - -2007-01-28 Øyvind Kolås - - * extensions/gegl-fixups.c: (conv_bgrA8_rgba8), (init): added - optimized permutator for going from cairo's buffer format to RGBA byte - order, as well as unpremultiplying. - -2007-01-28 Øyvind Kolås - - * extensions/gegl-fixups.c: fixed gamma conversion. - -2007-01-22 Michael Schumacher - - * docs/Makefile.am: declare the test programs used during doc - creating as variables to keep the commands in targets readable. - -2007-01-22 Øyvind Kolås - - Applied patch from Tim Mooney fixing bug #392916 - - * extensions/Makefile.am: $(prefix)/lib/babl-0.0 for its extensions - dir, which is incorrect for many 64 bit platforms. It should instead - use $(libdir)/babl-0.0. - -2007-01-22 Øyvind Kolås - - * babl/babl-internal.h: applied patch from Tim Mooney fixing bug - #392843, replacing _FUNCTION_ with _func_ which is the C99 equivalent - of the gcc extension. - -2007-01-16 Michael Schumacher - - * configure.ac: remove the check for dlopen again - didn't work as - intended - * babl/babl-extension.c: for #idfef WIN32, #define dl* functions - to their Windows equivalents (LoadLibrary, GetProcAddress, - FreeLibrary). - -2007-01-08 Øyvind Kolås - - * babl/babl-extension.c: define HAVE_DLOPEN if HAVE_DLFCN is set. - -2007-01-07 Øyvind Kolås - - * configure.ac: set version to 0.0.11 - -=========================== 0.0.10 released ============================= - -2007-01-07 Øyvind Kolås - - * configure.ac: set version to 0.0.10 - * docs/index-static.html.in: reworded things due to the subversion - switch. - -2007-01-06 Michael Schumacher - - This change makes babl buildable on Windows. - - * configure.ac: Add a check for function dlopen and disabled - static libs by default. Check for gettimeofday by using - AC_REPLACE_FUNCS. - - * babl/babl-internal.h: Add definitions for srandom and radnom to - srand and rand for the windows platform. - * babl/babl-conversion.c - * babl-model.c: Include babl-internal.h after math.h - - * babl/babl-extension.c: Use #ifdef HAVE_DLOPEN to hide dl* if it - is not available. - - * babl/Makefile.am: Removed win32_libs and added @LTLIBOBJS@ to - LIBADD to get the replacement for gettimeofday linked in if - needed. - - * babl/gettimeofday.c: New file to provide a replacement for - gettimeofday, only used on Windows yet. - -2007-01-06 Michael Schumacher - - * Makefile.am: don't go into the extensions subdirectory on - Windows - * extensions/Makefile.am: removed the win32_libs definition, using - libgw32c does more harm than good, apparently - -2007-01-06 Michael Schumacher - - * docs/Makefile.am: added EXEEXT to the tools used in some - commands - - * docs/tools/changelog2rss: remove unused SET_TITLE and - LISTING_TYPE; the former did cause an error on Windows - -2007-01-01 Kevin Cozens - - * docs/index-static.html.in: Fixes for various punctuation, grammar, - and typographical errors. - -2007-01-01 Kevin Cozens - - * configure.ac: Changes to properly (or at least better) version the - babl library. - - * babl.pc.in: It is too soon to include version information in the - name of the babl library at link time. - -2007-01-01 Kevin Cozens - - Some changes to fix build problems in FreeBSD and Windows. - - * configure.ac: Added missing m4 defines specifying version numbers, - and tests for libdl and libm (sets DL_LIB and MATH_LIB respectively). - - * babl.pc.in: Replaced several hard-coded items with ones defined - when configure is run. - - * babl/base/Makefile.am: - * extensions/Makefile.am: - * tests/Makefile.am: Use $(DL_LIB) and $(MATH_LIB) instead of - hard-coded options. - -2006-12-29 Øyvind Kolås - - * configure.ac: set the version of babl to 0.0.9 - -=========================== 0.0.8 released ============================= - -2006-12-29 Øyvind Kolås - - * configure.ac: set the version of babl to 0.0.8 - -2006-12-29 Øyvind Kolås - - * docs/Makefile.am: include changelog2rss script. - -2006-11-17 Øyvind Kolås - - Make babl compile with stricter compiler warnings, mostly related to - changing pointer arith from void* to char*. - - * babl/babl-classes.h: - * babl/babl-component.c: (component_new): - * babl/babl-conversion.c: (conversion_new), - (babl_conversion_planar_process), (babl_conversion_process): - * babl/babl-core.c: (convert_double_double), (rgba_to_rgba): - * babl/babl-extension.c: (extension_new): - * babl/babl-fish-path.c: (babl_fish_path): - * babl/babl-fish-reference.c: (babl_fish_reference), - (convert_to_double), (convert_from_double), (process_same_model), - (babl_fish_reference_process): - * babl/babl-fish-simple.c: (babl_fish_simple): - * babl/babl-fish.c: (babl_fish_process): - * babl/babl-format.c: (format_new): - * babl/babl-image.c: (image_new), (babl_image_from_linear), - (babl_image): - * babl/babl-internal.h: - * babl/babl-memory.c: (babl_malloc): - * babl/babl-model.c: (model_new): - * babl/babl-type.c: (type_new), (r_interval), (test_init): - * babl/base/babl-base.c: - * babl/base/babl-base.h: - * babl/base/formats.c: - * babl/base/model-gray.c: (rgba_to_graya), (rgba_to_gray), - (rgb_to_gray_2_2), (gray_2_2_to_rgb), (graya_to_rgba), - (gray_to_rgba), (gray_alpha_premultiplied_to_rgba), - (rgba_to_gray_alpha_premultiplied), - (non_premultiplied_to_premultiplied), - (premultiplied_to_non_premultiplied), - (rgba2gray_gamma_2_2_premultiplied), - (gray_gamma_2_2_premultiplied2rgba): - * babl/base/model-rgb.c: (copy_strip_1), (g3_gamma_2_2), - (g3_inv_gamma_2_2), (non_premultiplied_to_premultiplied), - (premultiplied_to_non_premultiplied), - (rgba2rgba_gamma_2_2_premultiplied), - (rgba_gamma_2_2_premultiplied2rgba), (rgba2rgba_gamma_2_2), - (rgba_gamma_2_22rgba): - * babl/base/model-ycbcr.c: (rgba_to_ycbcra), (rgba_to_ycbcr), - (ycbcra_to_rgba), (ycbcr_to_rgba): - * babl/base/type-float.c: (convert_double_float), - (convert_float_double): - * babl/base/type-u16.c: (convert_double_u16_scaled), - (convert_u16_double_scaled): - * babl/base/type-u32.c: (convert_double_u32_scaled), - (convert_u32_double_scaled): - * babl/base/type-u8.c: (convert_double_u8_scaled), - (convert_u8_double_scaled): - * extensions/CIE-Lab.c: (rgba_to_lab), (lab_to_rgba), - (rgba_to_laba), (laba_to_rgba), (convert_double_u8_scaled), - (convert_u8_double_scaled), (convert_double_u16_scaled), - (convert_u16_double_scaled): - * extensions/gegl-fixups.c: (conv_F_8), (conv_8_F): - * extensions/gggl-lies.c: (conv_F_8), (conv_F_16), (conv_8_F), - (conv_16_F): - * extensions/gggl.c: (conv_F_8), (conv_F_16), (conv_8_F), - (conv_16_F): - * extensions/naive-CMYK.c: (rgba_to_cmyk), (cmyk_to_rgba): - * tests/babl-html-dump.c: (normalize): - * tests/babl_class_name.c: - * tests/formats.c: (format_check): - * tests/grayscale_to_rgb.c: - * tests/models.c: (model_check): - * tests/rgb_to_bgr.c: - * tests/rgb_to_ycbcr.c: - * tests/srgb_to_lab_u8.c: - * tests/types.c: (type_check): - -2006-11-15 Øyvind Kolås - - Set the default BABL_PATH based on the prefix babl is compiled for. - - * babl/Makefile.am: - * babl/babl-extension.c: - -2006-11-07 Øyvind Kolås - - * extensions/CIE-Lab.c: (formats): added "CIE Lab alpha float" as - a default format. - -2006-08-31 Øyvind Kolås - - * configure.ac: set the version of babl to 0.0.7 - -=========================== 0.0.6 released ============================= - -2006-08-31 Øyvind Kolås - - * configure.ac: set the version of babl to 0.0.6 - -2006-10-09 Øyvind Kolås - - Cleaned up the typedef for Babl, fixes issues with g++. - - * babl/babl-classes.h: - * babl/babl-conversion.c: (conversion_new): - * babl/babl-fish-path.c: (babl_fish_path): - * babl/babl-fish-reference.c: (babl_fish_reference): - * babl/babl-fish-simple.c: (babl_fish_simple): - -2006-09-26 Dominik Ernst - - * babl/babl-classes.h: fixed an issue with g++ - -2006-09-23 Øyvind Kolås - - * docs/Makefile.am: output the conversion grid when building on - crucible. - -2006-09-14 Øyvind Kolås - - * babl/babl-internal.c: (babl_process): added global babl_total_usecs, - not exported through headers, but useful to be able to substract the - babl conversion time from other algorithms using babl. - -2006-09-12 Øyvind Kolås - - * autogen.sh: decreased required automake version to 1.7.9. (It - could probably be decreased even further, but this is at least - known to work.) - -2006-09-12 Michael Schumacher - - * autogen.sh: use the autogen.sh of GIMP as a base for babl's - autogen.sh. Among other things, this enables maintainer mode by - default. - -2006-09-10 Kevin Cozens - - * babl/babl-classes.h - * babl/babl-conversion.c - * babl/babl-fish-path.c - * babl/babl-fish-stats.c - * babl/babl-internal.c: Tick times are in usecs not msecs. Use longs - to hold tick values. - - * babl/babl-util.h: - * babl/babl-util.c (babl_ticks): Fixed calculation of time (usecs - not msecs). Changed declaration to return a long not unsigned int. - -2006-09-09 Øyvind Kolås - - * extensions/Makefile.am: moved -fPIC from LD_FLAGS to CFLAGS. - -2006-09-08 Øyvind Kolås - - * extensions/Makefile.am: added -fPIC to LD_FLAGS, thus making it - compile on 64bit archs as well. - -2006-09-04 Michael Schumacher - - * extensions/Makefile.am: have to link with libbabl.a, at least on - the Windows platforms - -2006-08-31 Øyvind Kolås - - * extensions/.cvsignore: added Makefile.in - -2006-08-31 Øyvind Kolås - - * configure.ac: set the version of babl to 0.0.5 (odd micro indicating - that it is a CVS version). - -=========================== 0.0.4 released ============================= - -2006-08-31 Øyvind Kolås - - * configure.ac: set the version of babl to 0.0.4 - * docs/index-static.html.in: added downloading location for tarballs - of babl. - * AUTHORS: Added Kevin Cozens - -2006-08-31 Øyvind Kolås - - * Makefile.am: added a dependency on all for README, making it - possible to do ./autogen.sh && make distcheck #from a clean CVS - checkout. - -2006-08-28 Kevin Cozens - - * configure.ac: Added AM_MAINTAINER_MODE. - - * docs/Makefile.am: Moved BablFishPath.txt to BUILT_EXTRA_DIST. - - * tests/Makefile.am: Removed .cvsignore from EXTRA_DIST. - -2006-08-28 Kevin Cozens - - Changes to get 'make distcheck' working properly. - - * docs/Makefile.am: Added BablFishPath.txt to DISTCLEANFILES. - - * extensions/Makefile.am: Added. - - * extensions/Makefile.in: Removed (replaced by Makefile.am). - -2006-08-25 Michael Schumacher - - * configure.ac: added AC_LIBTOOL_WIN32_DLL as a preparation for - proper builds of shared libs on win32 & there's no need to define - OS_WIN32 here... - * babl/babl-extension.c: ...if the only place where it is needed - can be handled by HAVE_DLFCN_H - -2006-08-24 Øyvind Kolås - - * extensions/Makefile.in: do not add libbabl.a into plug-ins - -2006-07-06 Øyvind Kolås - - * babl.pc.in: Added -lm to the list of libraries that need to be - linked along with babl. - -2006-06-24 Øyvind Kolås - - * babl.pc.in: stripped trailing /babl from CFLAGS include path. - -2006-06-12 Øyvind Kolås - - Do not expect the user to pass in BablImages (existance of babl - pointer decorations should not be allowed to be used to implement type - checking for provided buffers/bablimages) - - * babl/babl-fish.c: (babl_fish_process): - * babl/babl-fish-reference.c: (babl_fish_reference_process): - * docs/index-static.html.in: removed section about planar BablImages - since the API is now disabled. - -2006-06-06 Øyvind Kolås - - Register all the formats that the gggl based conversions use in - babl-base. This allows a string based short hand vocabulary of format - names that can be expected to exist. - - * babl/base/Makefile.am: added formats.c - * babl/base/babl-base.c: (babl_base_init): initialize formats. - -2006-06-06 Øyvind Kolås - - Added conversions based on gggl that assume no gamma in their - conversions. - * extensions/gggl-lies.c: Added. - -2006-06-06 Øyvind Kolås - - * docs/Makefile.am: redirect the check for tempfile to /dev/null - * docs/tools/xml_insert.sh: Add tempfile workaround here as well. - -2006-06-06 Øyvind Kolås - - * docs/Makefile.am: Do not rely that a command calle tempfile exists. - -2006-06-05 Øyvind Kolås - - * extensions/gegl-fixups.c: A babl extension to make the testing of - gegl faster. - -2006-06-02 Øyvind Kolås - - * extensions/gggl.c: (table_init): Fix some compile warnings. - -2006-06-02 Øyvind Kolås - - I'm not entirely sure about installing babl-classes.h like this, it - might make more sense to create setters/getters to be used. Thus - making it possible to extend the structs at a later stage without - breaking binary compatibility. - - * babl/Makefile.am: Added babl-classes.h to the installed headers - * babl/babl-classes.h: Made the magic number fit in 32bit int. - * babl/babl.h: include babl-classes.h - -2006-02-22 Øyvind Kolås - - * docs/index-static.html.in: added a link to the DHTML version of the - coverage map. - -2006-02-22 Øyvind Kolås - - * extensions/gggl.c: (conv_rgbaF_rgb8), (conv_rgbAF_rgbF), (init): - added two more conversions for gggl usage. - -2005-12-17 Michael Schumacher - - * extensions/Makefile.in: add libgw32 and its dependencies to - LDADD for the win32 platform - -2005-11-10 Øyvind Kolås - - * docs/index-static.html.in: Minor reformulations and spelling fixes. - -2005-11-08 Sven Neumann - - * configure.ac: use AM_CONFIG_HEADER instead of AC_CONFIG_HEADERS. - -2005-11-04 Øyvind Kolås - - * babl/babl-format.c: (create_name): fixed an invalid memory access in - comparision of component order (and now also length.) - -2005-10-08 Øyvind Kolås - - * docs/index-static.html.in: Fixed the second processing example. ( - added missing pixel_count) - -2005-09-27 Øyvind Kolås - - * babl/babl-classes.h: Added time consumption instrumentation to - BablFish. - * babl/babl-fish-path.c: (babl_fish_path), (babl_fish_path_process): - intialization of instrumentation data. - * babl/babl-fish-stats.c: (table_destination_each), (each_conv), - (conversions), (babl_fish_stats): Output timing data, as well as a - list of all conversions with the obviously bad ones marked in red. - * babl/babl-internal.c: (babl_process): update instrumentation. - * babl/babl-introspect.c: (conversion_introspect): only query error - from conversions where that is legal. - * babl/babl-util.c: changed from msecs to nsecs (might be some more - places in the code to change names of variables.) - * extensions/gggl.c: (conv_gF_gaF), (conv_gF_rgbF), (conv_rgbF_gF), - (conv_rgbaF_rgb8): Changes to increase sanity. - -2005-09-27 Øyvind Kolås - - * tests/srgb_to_lab_u8.c: (test): renamed format (srgb -> R'G'B' u8) - -2005-09-27 Øyvind Kolås - - Updates done due to improvements gotten from BablFishStat feedback. - - * babl/base/model-gray.c: (components), (models), - (rgba2gray_gamma_2_2_premultiplied), - (gray_gamma_2_2_premultiplied2rgba), (conversions): - * babl/base/model-rgb.c: (components), (models), (copy_strip_1), - (g3_gamma_2_2), (g3_inv_gamma_2_2), - (non_premultiplied_to_premultiplied), - (premultiplied_to_non_premultiplied), - (rgba2rgba_gamma_2_2_premultiplied), - (rgba_gamma_2_2_premultiplied2rgba), (rgba2rgba_gamma_2_2), - (rgba_gamma_2_22rgba), (conversions), (formats): - * babl/base/model-ycbcr.c: (models), (formats): - * docs/index-static.html.in: - * extensions/gggl.c: (conv_F_8), (conv_8_F), (conv_F_D), - (conv_D_F), (conv_rgba8_rgbaF), (conv_rgb8_rgbF), (conv_ga8_gaF), - (conv_rgbaF_rgbaD), (conv_rgbaD_rgbaF), (conv_rgbAF_rgbaF), - (conv_rgbaF_rgbAF), (conv_rgbaF_rgbF), (conv_rgbF_rgbaF), - (conv_rgbaF_gaF), (conv_rgbaF_rgb8), (conv_rgbA16_rgbaF), - (conv_rgb8_rgba8), (conv_rgbA8_rgb8), (init): - -2005-09-27 Øyvind Kolås - - Upgrade of BablFishPath. - - * babl/babl-fish-path.c: (legal_error), (max_path_length), - (get_conversion_chain), (chain_contains_fmt), (chain_gen_each), - (babl_fish_path), (chain_process), (babl_fish_path_process), - (test_create), (chain_error): Various updates, needed instrumentation - and error data is now calculated and cached. - * babl/babl-fish-reference.c: (babl_fish_reference): do not update - instrumentation for internal calls. - * babl/babl-fish-simple.c: (babl_fish_simple): do not update - instrumentation for internal calls. - * babl/babl-introspect.c: (conversion_introspect): some more - information. - * babl/babl-model.c: (test_create), (babl_model_is_symmetric): use - comparion function from babl-util - * babl/babl-conversion.c: (test_create), (babl_conversion_cost), - (babl_conversion_error): use comparion function from babl-util. - * babl/babl.c: (babl_init): no need to do post extension tricks - anymore. - * babl/babl-core.c: (babl_core_init): added PAD component. - -2005-09-27 Øyvind Kolås - - * babl/babl-util.h, - * babl/babl-util.c: (babl_rel_avg_error): moved buffer comparison - function to one place. - * babl/babl-classes.h: Added error field to fishes, made path length - dynamic. - * babl/babl-internal.h: added misc global constants. - * babl/babl-internal.c: created caching accessors in classes, to avoid - very large bootstrapping time. - * babl/babl-conversion.c: (test_create), (babl_conversion_cost), - (babl_conversion_error): - * babl/babl-format.c: (test_create), (babl_format_loss): - * babl/babl-type.c: (babl_type_is_symmetric): - -2005-09-27 Øyvind Kolås - - Moved html generator stats code into a seperate source fil in core, - babl now creates /tmp/babl-stats.txt when the BABL_STATS enviroment - variable is set. - - * babl/Makefile.am: - * babl/babl.c: - * tests/babl_fish_path_dhtml.c: (main): - * babl/babl-fish-stats.c: (table_destination_each). - -2005-09-19 Øyvind Kolås - - * docs/index-static.html.in: s/DHTML/interactive/ - -2005-09-19 Øyvind Kolås - - BablFishPath touchups. - - * babl/babl-conversion.c: cost = cost * 10 + 1, makes the overhead - of actually running a conversion 1. Removed stupid long pats from - created conversions. - * babl/babl-fish-path.c: (chain_gen_each): Ensure the chain doesn't - take us through larger loss than allowed. - * babl/babl-internal.c: (babl_extension_post_load): do not - autogenerate formats. - * docs/index-static.html.in: updating documentation. - * tests/babl_fish_path_dhtml.c: (table_destination_each), - (table_source_each), (main): recoded to use CSS tricks instead of - javascript, reduced generated file size by 50%; - * extensions/gggl.c: (conv_labF_xyzF), (conv_xyzF_labF): added missing - return value. - -2005-09-19 Øyvind Kolås - - * extensions/gggl.c: Added the bulk of gggl based conversions as an - extension. Many of these don't live up to the quality requirements of - babl, but some do, and provide a good base for further BablFishPath - coverage. - -2005-09-18 Øyvind Kolås - - * docs/tools/changelog2rss: tool to create RSS feed of ChangeLog. - -2005-09-18 Øyvind Kolås - - * docs/Makefile.am: Included BablFishPath.[html|txt] - * docs/index-static.html.in: included some ramblings about the - background and purpose of babl. - -2005-09-18 Øyvind Kolås - - * tests/Makefile.am: - * tests/babl_fish_path_dhtml.c, - * tests/babl_fish_path_fitness.c: new introspection outputters, that - report on the conversion matrix of BablFishPath. - * tests/babl-html-dump.c: (main): removed conversions, since it is - now used as "Vocabulary" in the documentation,. - * tests/conversions.c: (each_conversion), (main): - * tests/formats.c: (format_check), (main): - * tests/models.c: (model_check), (main): - * tests/types.c: (type_check), (main): Moved the logic into BablCore - in previous commit. - -2005-09-18 Øyvind Kolås - - - Updating test suite, conversion and format quality testing - code folded into babl-core in previous commit. - -2005-09-18 Øyvind Kolås - - * babl/base/model-cmyk.c: (rgb_to_cmyk), (cmyk_to_rgb), - (conversions), (formats): - * babl/base/model-gray.c: (rgba_to_graya), (rgba_to_gray), - (graya_to_rgba), (gray_to_rgba), (conversions): - * babl/base/model-rgb.c: (formats): - * babl/base/model-ycbcr.c: (rgba_to_ycbcra), (rgba_to_ycbcr), - (ycbcra_to_rgba), (ycbcr_to_rgba), (conversions), (formats): - * extensions/CIE-Lab.c: (rgba_to_lab), (lab_to_rgba), - (rgba_to_laba), (laba_to_rgba), (conversions): - * extensions/naive-CMYK.c: (init), (rgba_to_cmyk), (cmyk_to_rgba): - - register linear reference conversions instead, since they can be used - in BablFishPath chains. - -2005-09-18 Øyvind Kolås - - Adding BablFishPath, as well as splittin out Simple and Reference - from babl-fish.c. (lazy commit of large changes :d ) - - * babl/babl-internal.h: - * babl/babl-core.c: (rgba_to_rgba), (babl_core_init): - * babl/babl-db.c: (babl_db_count): - * babl/babl-db.h: - * babl/babl-fish.c: (match_conversion), (babl_conversion_find), - (babl_fish_db), (babl_fish), (babl_fish_process), - (each_babl_fish_destroy): - * babl/babl-format.c: (babl_format_new), (babl_formats_count), - (babl_format_with_model_as_type), (test_create), - (babl_format_loss): - * babl/babl-internal.c: (babl_process), (each_conversion), - (each_format), (gen_type_format_for_model), - (gen_formats_for_model), (babl_extension_post_load): - * babl/babl-introspect.c: (conversion_introspect): - * babl/babl-model.c: (babl_model_new), (test_create), - (reference_format), (construct_double_format), - (babl_model_is_symmetric): - * babl/babl-sanity.c: (id_sanity): - * babl/babl-type.c: (babl_type_new), (r_interval), (test_init), - (double_vector_format), (babl_type_is_symmetric): - -2005-09-18 Øyvind Kolås - - * babl/babl-classes.h: added BablFishPath - * babl/babl-util.c: (babl_list_each), (init_ticks), (babl_ticks): - * babl/babl-util.h: - -2005-09-18 Øyvind Kolås - - * babl/babl.c: (babl_init), - * babl/babl.h: made babl_fish variadic. - -2005-09-18 Øyvind Kolås - - * babl/babl-memory.[ch]: (babl_free), (babl_realloc): made babl_free - variadic, and added the potential for a clearing realloc. - -2005-09-12 Øyvind Kolås - - * tests/conversions.c: (test_init): code simplification. - -2005-09-12 Øyvind Kolås - - * babl/babl-classes.h: add loss field to format class. - * babl/babl-format.c: (format_new): set loss field to -1 as initial - value. - * tests/conversions.c: (reference_format): simplify - * tests/formats.c: (test_init), (format_check), (main): code - simplification. - -2005-09-11 Øyvind Kolås - - * babl/babl.h: use gcc 4.x attribute for NULL sentinel. - * babl/babl-format.c: (babl_format_new): added missing enumeration - values to switch. - * babl/babl-model.c: (babl_model_new): added missing enumeration - values to switch. - -2005-09-11 Øyvind Kolås - - * tests/formats.c: new test (that might form the basis of loss - calculations done for ranking of formats). - * tests/Makefile.am: added new test - -2005-09-11 Øyvind Kolås - - * extensions/CIE-Lab.c: (formats): s/cie-lab-u16/CIE Lab u16/ - -2005-09-11 Øyvind Kolås - - * babl/babl-classes.h: Removed unused list of conversions to - types/models/formats. - - * babl/babl-conversion.c: (conversion_new): - * babl/babl-format.c: (each_babl_format_destroy), (format_new): - * babl/babl-image.c: (babl_image_from_linear): - * babl/babl-introspect.c: (item_conversions_introspect): - * babl/babl-memory.c: (babl_realloc): - * babl/babl-model.c: (each_babl_model_destroy), (model_new): - * babl/babl-sampling.c: (each_babl_sampling_destroy): - * babl/babl-sanity.c: (type_sanity), (model_sanity), (babl_sanity): - * babl/babl-type.c: (each_babl_type_destroy), (type_new): - -2005-09-09 Øyvind Kolås - - * docs/Makefile.am: set BABL_PATH to builddir for creating the - documentation - * docs/index-static.html.in: various updates. - -2005-09-09 Øyvind Kolås - - * babl/base/type-u16.c: (convert_double_u16_scaled): - * babl/base/type-u32.c: (convert_double_u32_scaled): - * babl/base/type-u8.c: (convert_double_u8_scaled), - (babl_base_type_u8): - * extensions/CIE-Lab.c: (convert_double_u8_scaled), - (convert_double_u16_scaled): uintval = rint (dval * MAXINT) - -2005-09-09 Øyvind Kolås - - * tests/conversions.c: (validate_conversion): do relative average - error calculations. - * tests/srgb_to_lab_u8.c: update values. - * tests/types.c: set a very low tolerance. - -2005-09-09 Øyvind Kolås - - * babl/babl-format.c: (create_name): Create shorter names when - the format uses a single datatype and the components are listed in - model order. - * babl/base/model-lab.c: removed. - * babl/base/model-rgb.c: (formats), - * babl/base/model-ycbcr.c: (formats): Use automatic names for formats. - -2005-09-09 Øyvind Kolås - - * babl/babl-classes.h: added error to BablConversion. - * babl/babl-conversion.c: (conversion_new), (babl_conversion_new): - track changes to fields in constructors. - -2005-09-08 Øyvind Kolås - - * Makefile.am: build extensions before tests. - * extensions/Makefile.in: build extensions when check is done. - * tests/Makefile.am: removed erroniously added foo test. - -2005-09-08 Øyvind Kolås - - * babl/base/type-float.c: - * babl/base/type-u16.c: - * babl/base/type-u8.c: s/"linear"/"plane"/ - * babl/base/Makefile.am, - * babl/base/babl-base.c, - * babl/base/type-u32.c: new type. - * extensions/CIE-Lab.c: - * extensions/Makefile.in: changes needed (for not yet added) lcms - extension. - * tests/Makefile.am: added new test. - * tests/conversions.c: new test to check fast paths against reference - fish. - -2005-09-08 Øyvind Kolås - - Made simple fishes work in the core. - - * babl/babl-classes.h: reduced number of conversion classes. - removed unused from and to members in struct. - * babl/babl-conversion.c: (conversion_new), (babl_conversion_new), - (babl_conversion_linear_process), (babl_conversion_plane_process), - (babl_conversion_planar_process), (babl_conversion_process): - * babl/babl-component.c: (each_babl_component_destroy), - (component_new): removed unused from and to members. - * babl/babl-fish.c: (babl_conversion_find2), - (babl_conversion_find), (babl_fish_reference), (babl_fish_simple), - (babl_fish), (convert_to_double), (convert_from_double), - (babl_fish_reference_process): use fast path if found directly in a - simple fishes. - * babl/babl-format.c: (babl_format_new): - * babl/babl-internal.c: (babl_process): - * babl/babl-internal.h: - * babl/babl-introspect.c: (each_introspect): - * babl/babl-model.c: (babl_model_new): - * babl/babl-core.c: (babl_core_init): s/linear/plane/ - * tests/babl_class_name.c: update according to class changes. - -2005-09-08 Øyvind Kolås - - * AUTHORS: Added Micahel Schumacher, and email addresses. - * docs/index-static.html.in: - * docs/babl.css: - * tests/babl-html-dump.c: (main), (normalize), (show_item), - (hide_item), (each_item), (model_html), (type_html), - (conversion_html), (format_html): Use DHTML for expandable display of - registered data structures. - * docs/graphics/Makefile.am: added web target, and .SILENT option. - * docs/Makefile.am: added .SILENT option. - * configure.ac: added website location. - -2005-09-01 Michael Schumacher - - * configure.ac: added a check for OS_WIN32 - * babl/Makefile.am: link with libgw32c to provide dl* functions on - win32 - * babl/babl-extension.c: added definitions of dl* function forwin32 - * tests/Makefile.am: removed -ldl for win32 - -2005-09-01 Sven Neumann - - * Makefile.am: don't dist the generated babl.pc file. - -2005-09-01 Sven Neumann - - * tests/Makefile.am (TESTS_ENVIRONMENT): set BABL_PATH to include - extension from the builddir. - -2005-09-01 Øyvind Kolås - - * babl/babl-internal.h: HACK statically define BablDb *db, - for all internal translation units. - -2005-09-01 Øyvind Kolås - - Added a 128 item hashtable to each object list. - - * babl/Makefile.am: added new file 'babl-db.c' - * babl/babl-db.h: moved static function ... - * babl/babl-db.c: ... here in a new file, also implemented a hashing - optimization based on the strings of names. - * babl/babl-internal.h: changed API in base class templates. - * babl/babl-component.c, - * babl/babl-extension.c, - * babl/babl-fish.c, - * babl/babl-format.c, - * babl/babl-image.c, - * babl/babl-model.c, - * babl/babl-sampling.c, - * babl/babl-type.c: changed db_insert(..) to babl_db_insert(db, ...) - - * babl/babl.c: added babl_fish_init () - -2005-08-31 Øyvind Kolås - - * docs/index-static.html.in: Changed ChangeLog link in NEWS section. - -2005-08-31 Øyvind Kolås - - * babl/babl-component.h, - * babl/babl-core.h, - * babl/babl-conversion.h, - * babl/babl-extension.h, - * babl/babl-format.h, - * babl/babl-instance.h, - * babl/babl-introspect.h, - * babl/babl-image.h, - * babl/babl-fish.h, - * babl/babl-model.h, - * babl/babl-sampling.h, - * babl/babl-sanity.h, - * babl/babl-type.h: DELETED - * babl/babl.h: defines moved from deleted headers. Added - documentation. - * babl/babl-internal.h: defines moved from deleted headers. - - * babl/Makefile.am: Reflect above changes. - * babl/babl-classes.h: redefined conversion functions to return long, - and take number of pixels as long. - * babl/babl-component.c, - * babl/babl-conversion.c, - * babl/babl-core.c, - * babl/babl-db.h, - * babl/babl-extension.c, - * babl/babl-fish.c, - * babl/babl-format.c, - * babl/babl-image.c, - * babl/babl-instance.h, - * babl/babl-internal.c, - * babl/babl-internal.h, - * babl/babl-introspect.c, - * babl/babl-memory.c, - * babl/babl-model.c, - * babl/babl-sampling.c, - * babl/babl-sanity.c, - * babl/babl-type.c, - * babl/babl.c, - * babl/base/model-cmyk.c, - * babl/base/model-gray.c, - * babl/base/model-rgb.c, - * babl/base/model-ycbcr.c, - * babl/base/type-float.c, - * babl/base/type-u16.c, - * babl/base/type-u8.c, - * docs/index-static.html.in, - * extensions/CIE-Lab.c, - * extensions/naive-CMYK.c, - * tests/babl-html-dump.c, - * tests/babl_class_name.c, - * tests/grayscale_to_rgb.c, - * tests/introspect.c, - * tests/models.c, - * tests/nop.c, - * tests/rgb_to_bgr.c, - * tests/rgb_to_ycbcr.c, - * tests/sanity.c, - * tests/srgb_to_lab_u8.c, - * tests/types.c: reflect changes in headers. - -2005-08-31 Øyvind Kolås - - * Makefile.am, - * babl.pc.in, - * configure.ac, - * extensions/Makefile.in: Fixed build of extensions. (awaiting - fix of babl/babl-extension.c to use new #defines) - -2005-08-30 Øyvind Kolås - - * babl/base/model-gray.c: - (rgba_to_gray_alpha_premultiplied): fixed array index error. - * extensions/Makefile.in: Added -I../babl to include path. - * extensions/naive-CMYK.c: (init), (rgb_to_cmyk), (cmyk_to_rgb): - reordered the code, fixed a component swapping issue - discovered by tests/model.c - -2005-08-30 Øyvind Kolås - - * tests/srgb_to_lab_u8.c: updated values. - * tests/types.c: rewritten. - * tests/models.c: added, a test to test that reference conversions - registered for a BablModel are symmetrical. - * tests/float_to_u8.c, - * tests/u8_to_float.c, - * tests/rgb_to_lab_to_rgb.c, - * tests/rgb_to_ycbcr_to_rgb.c: removed. - * tests/Makefile.am: updated. - -2005-08-30 Øyvind Kolås - - * babl/babl-introspect.c: - (model_introspect), - (format_introspect), - (each_introspect): use double quotes for strings. - (conversion_introspect): new, show instrumentation data. - (fish_introspect): new, show instrumentation data. - -2005-08-30 Øyvind Kolås - - * babl/babl-classes.h: Added instrumentation variables to - BablConversion and BablFish. - * babl/babl-conversion.c: - (babl_conversion_new): Handle re-registration. - (conversion_new), - (babl_conversion_process): instrumentation variables - * babl/babl-component.c: - (babl_component_new): Handle re-registration. - * babl/babl-extension.c: Code cleanup. - (babl_extension_base): Handle re-registration. - (babl_extension_load_dir): close dir handle when done. - * babl/babl-fish.c: - (create_name) - (babl_fish_new): instrumentation variables, autogenerated - name. - (babl_fish_reference_new): instrumentation variables, - autogenerated name. - (babl_process): instrumentation variables. - (babl_conversion_find): use the lists of the source type for - the search (speed improvement). - (babl_fish): - (process_same_model): reference process with fewer steps. - (babl_fish_reference_process): use fast path when models are - the same. - * babl/babl-format.c: (babl_format_new): Handle re-registration. - * babl/babl-model.c: (babl_model_new): handle re-registration. - * babl/babl-type.c: (babl_type_new): handle re-registration. - -2005-08-30 Øyvind Kolås - - * babl/babl-memory.c: (babl_free): freeing of non babl allocated - memory is fatal. - -2005-08-29 Øyvind Kolås - - * tests/types.c: added test that tests the symmetry of reference - conversions for registered types. - -2005-08-29 Øyvind Kolås - - * babl/babl-format.c: (each_babl_format_destroy), (format_new), - (create_name), (babl_format_new): New API, name is now a key/value - pair, and if not set the name will be autogenerated. - * babl/base/model-rgb.c, - * babl/base/model-ycbcr.c, - * extensions/CIE-Lab.c, - * extensions/naive-CMYK.c, - * tests/Makefile.am, - * tests/float_to_u8.c, - * tests/grayscale_to_rgb.c, - * tests/rgb_to_bgr.c, - * tests/rgb_to_lab_to_rgb.c, - * tests/rgb_to_ycbcr.c, - * tests/rgb_to_ycbcr_to_rgb.c, - * tests/u8_to_float.c: update to new API. - -2005-08-29 Øyvind Kolås - - * babl/babl-db.h: Do nor warn about collision during db_insert - * babl/babl-extension.[ch]: Implemented fs traversal based on BABL_PATH. - added babl_set_extender to API. - * babl/babl-instance.h: Changed signature of type_name##_new. - * babl/babl-introspect.c: (babl_introspect): use new babl_extender - -2005-08-29 Øyvind Kolås - - * babl/babl-internal.c: (babl_internal_init): set memory functions. - * babl/babl-memory.c: (babl_set_malloc), (babl_set_free), - (functions_sanity), (babl_malloc), (babl_free), (babl_realloc), - (babl_calloc), (babl_sizeof), (babl_strdup), (babl_strcat), - (babl_memory_sanity), - * babl/babl-memory.h: Added babl_str* functions, that behave slightly - different from the standard ones. - * babl/babl-util.c: (babl_add_ptr_to_list): made error fatal. - * babl/babl.c: (babl_init), (babl_destroy): added babl_internal - -2005-08-28 Øyvind Kolås - - * babl/babl-internal.[ch]: (babl_die): A function to call from - babl_fatal (...), invokes commands resulting in a backtrace, thus - giving context to where things broke. - * babl/babl-component.c: (babl_component_new): - * babl/babl-conversion.c: (babl_conversion_new): - * babl/babl-fish.c: (babl_conversion_find): - * babl/babl-format.c: (format_new), (babl_format_new): - * babl/babl-model.c: (babl_model_new): - * babl/babl-type.c: (babl_type_new): use babl_fatal() instead of - babl_log () on API mistakes. - -2005-08-28 Øyvind Kolås - - * babl/babl-pixel-format.c: removed - * babl/babl-format.c: readded under new name. - - * babl/babl-pixel-format.h: removed - * babl/babl-format.h: readded under new name. - - * babl/babl-classes.c: removed - * babl/babl-internal.c: readded under new name. - - * babl/babl.h, - * babl/Makefile.am, - * babl/babl-fish.c: Accomodate changes. - -2005-08-28 Øyvind Kolås - - - * babl/babl-component.c: (babl_component_new): s/parameter/argument/ - - * babl/babl-extension.[ch]: the extension class. - * babl/babl-model.c: (create_name), (babl_model_new): generate - automatic name, allow override with key/value pair. - s/parameter/argument/ - * babl/babl-pixel-format.c: (babl_format_new): s/parameter/argument/ - * babl/babl-sampling.c: (babl_sampling): s/parameter/argument/ - * babl/babl-type.c: (babl_type_new): s/paramter/argument/ - * babl/babl-conversion.c, (create_name), (babl_conversion_new): - * babl/babl-conversion.h: Changed API, first two parameters are now - source and destination. - * babl/babl-instance.h: Added _NO_NEW variation of declarative name. - * babl/babl-internal.h: exit (-1) when a name lookup fails. - - * babl/babl.h: do not export babl-ids.h - - * babl/base/Makefile.am: Files removed - * babl/base/babl-base.c: (models): removed model-lab - * babl/base/cpercep.[ch], - * babl/base/models.c, - * babl/base/model-lab.c, - * babl/base/types.c: removed - - * babl/base/model-gray.c, - * babl/base/model-rgb.c, - * babl/base/model-ycbcr.c: - (models), (conversions): changed to new model_new and - conversion_new api. - - * babl/base/type-float.c, - * babl/base/type-u16.c, - * babl/base/type-u8.c: new conversion API - - - * configure.ac, - * Makefile.am: added extensions subdir - * extensions/Makefile.in: NB: hard-coded installpath to - /home/pippin/.babl/ - * extensions/CIE-Lab.c: moved here from BablBase, contains cpercep.c - and cpercep.h - * extensions/naive-CMYK.c: moved here from BablBase. - * extensions/util.h: convenience functions for babl extensions. - - * babl/babl-core.[ch]: double and RGBA originating from BablBase. - - * docs/index-static.html.in: updated TODO list. - - * tests/float_to_u8.c, - * tests/grayscale_to_rgb.c, - * tests/rgb_to_bgr.c, - * tests/rgb_to_lab_to_rgb.c, - * tests/rgb_to_ycbcr.c, - * tests/rgb_to_ycbcr_to_rgb.c, - * tests/srgb_to_lab_u8.c, - * tests/u8_to_float.c: follow naming changed. - -2005-08-27 Øyvind Kolås - - * Makefile.am: - * babl.pc.in: added -dl - * babl/babl-classes.c: Added BablExtension to string list of types. - * babl/babl-classes.h: Added BablExtension, some reordering in union. - * babl/babl-conversion.c: - (create_name), (babl_conversion_new): compute the name of the - conversion instead of explicitly having to provide it. - * babl/babl-core.c: - (convert_double_double), (copy_strip_1), - (babl_core_init): Moved double datatype and RGBA model from - base into core. - * babl/babl-core.h: new file - * babl/babl-db.h: improved logging, print current extender as well. - * babl/babl-ids.h: removed some non central ids. - * babl/babl-internal.h: new varargs based logger. - * babl/babl-introspect.c: (babl_introspect): use quiet "fake" - extender. Allow introspection of single objects. - * babl/babl-introspect.h: Allow introspection of single objects. - * babl/babl-memory.c: (babl_memory_sanity): use babl_log instead of - fprintf. - * babl/babl-sanity.c: (id_sanity): only complain about id==0 in - BablBase / BablCore. - * babl/babl.c: (babl_init), (babl_destroy): added core and extension - to build up/tear down lists. - * babl/babl.h: removed babl_introspect which doesn't belong here - anymore. - * babl/base/Makefile.am: Removed type-double.c - * babl/base/babl-base.c: (types), (models): removed - babl_base_type_double () - * babl/base/model-rgb.c: (components), (models): removed RGBA model. - * babl/base/type-double.c: removed - - * docs/index-static.html.in: - * tests/Makefile.am: LDADD += -ldl - * tests/introspect.c: (main): pass NULL as argument to - babl_introspect () to do full objectspace traversal. - - * babl/babl-fish.h: - * babl/babl-model.h: - * babl/babl-pixel-format.h: - * babl/babl-sampling.h: - * babl/babl-conversion.h: - * babl/babl-component.h: cosmetic rearrangement of lines. - -2005-08-27 Øyvind Kolås - - * babl/babl-component.c: (babl_component_new): - * babl/babl-conversion.c: (conversion_new), (babl_conversion_new), - (babl_conversion_process): - * babl/babl-db.h: - * babl/babl-fish.c: (babl_conversion_find), (babl_fish), - (babl_fish_reference_process), (babl_fish_process), (babl_process): - * babl/babl-image.c: (babl_image_from_linear), (babl_image): - * babl/babl-internal.h: - * babl/babl-introspect.c: (babl_introspect), (model_introspect): - * babl/babl-memory.c: (babl_malloc), (babl_strdup), (babl_realloc), - (babl_calloc): - * babl/babl-model.c: (babl_model_new): - * babl/babl-pixel-format.c: (format_new), (babl_format_new): - * babl/babl-type.c: (babl_type_new): - * babl/babl-util.c: (babl_add_ptr_to_list): - * babl/base/type-u8.c: - * tests/babl_class_name.c: (test): - - Made babl_log(...) print the file, line and function by itself. - -2005-08-27 Øyvind Kolås - - * docs/graphics/Makefile.am: s/INSCAPE/INKSCAPE/ - -2005-08-27 Sven Neumann - - * configure.ac - * Makefile.am - * docs/Makefile.am - * docs/graphics/Makefile.am: check for inkscape and w3m which are - needed to build the documentation. Compile without them but bail - out on 'make dist'. - -2005-08-26 Øyvind Kolås - - * tests/rgb_to_bgr.c: added component shuffling test - * tests/Makefile.am: added rgb_to_bgr to TESTS - -2005-08-25 Øyvind Kolås - - * docs/index-static.html.in: removed done things from TODO list. - -2005-08-25 Øyvind Kolås - - * babl/babl-fish.c: - (babl_to_double),(babl_from_double): new functions. - (babl_fish_reference_process): made type a component - shuffling work for linear buffers - * tests/rgb_to_lab_u8.c: filled in calculated values. - -2005-08-25 Øyvind Kolås - - * tests/rgb_to_ycbcr.c, - * tests/rgb_to_ycbcr_to_rgb.c: fix Y' component name - -2005-08-25 Øyvind Kolås - - * babl/babl-classes.h: - BablFormat: added .bytes_per_pixel - BablImage: s/bands/components/ - * babl/babl-conversion.c: s/bands/components/ - * babl/babl-image.c: s/bands/components/ - * babl/babl-pixel-format.c: (format_new) check if provided pixel - format matches model. Calculate .bytes_per_pixel. - * tests/babl-html-dump.c: use format.bytes_per_pixel - -2005-08-25 Øyvind Kolås - - * babl/babl-classes.h: - BablModel: added .type - BablFormat: reordered - BablImage: added .format, .model, .sampling and .type - BablFishReference: removed implementation details - * babl/babl-component.c: (component_new): use malloc instead of calloc - * babl/babl-conversion.c: - (conversion_new): use malloc instead of calloc - (babl_conversion_linear_process) - (babl_conversion_process): pass pitch to functions. - (babl_conversion_planar_process): duplicate data pointers in - image before passing them on. - * babl/babl-db.h: - (db_each): indentation fix. - * babl/babl-fish.c: - (babl_fish_reference_new), - (babl_fish_reference_process), - (babl_fish_process), (babl_process): restructuring of the - reference bablfish, approaching data and component shuffling - functionality. - * babl/babl-image.c: - (image_new): use malloc instead of calloc - (babl_image_from_linear), (babl_image): Added more information - to structure. - * babl/babl-image.h: s/_new// - * babl/babl-internal.h: #define BABL_MAX_COMPONENTS 32 - * babl/babl-introspect.c: - (format_introspect): s/bands/components/ - * babl/babl-model.c: - (model_new): use malloc instead of calloc - * babl/babl-pixel-format.c: - (format_new): use malloc instead of calloc - (babl_format_new): s/bands/components/ - * babl/babl-type.c: - (type_new): use malloc instead of calloc - - - * babl/base/type-double.c, - * babl/base/type-float.c, - * babl/base/type-u16.c, - * babl/base/type-u8.c: more parameters to conversion functions, added - a codewriting macro for different scale / min/max factors. - - * docs/index-static.html.in: reindent. - * tests/babl-html-dump.c: (format_html): s/bands/components/ - * tests/srgb_to_lab_u8.c: (test): use absolute error in check. - -2005-08-24 Øyvind Kolås - - * tests/sanity.c: Added a test that fails if the internal sanity - checks are failing. - -2005-08-24 Øyvind Kolås - - * babl/babl-classes.c, - * babl/babl-classes.h, - * babl/babl-component.c, - * babl/babl-conversion.c, - * babl/babl-db.h, - * babl/babl-fish.c, - * babl/babl-fish.h, - * babl/babl-image.c, - * babl/babl-image.h, - * babl/babl-internal.h, - * babl/babl-introspect.c, - * babl/babl-model.c, - * babl/babl-model.h, - * babl/babl-pixel-format.c, - * babl/babl-pixel-format.h, - * babl/babl-sanity.c, - * babl/babl-sanity.h, - * babl/babl-type.c, - * babl/babl.c, - * babl/babl.h, - * babl/base/model-cmyk.c, - * babl/base/model-gray.c, - * babl/base/model-lab.c, - * babl/base/model-rgb.c, - * babl/base/model-ycbcr.c, - * tests/Makefile.am, - * tests/babl-html-dump.c, - * tests/babl_class_name.c, - * tests/float_to_u8.c, - * tests/grayscale_to_rgb.c, - * tests/rgb_to_lab_to_rgb.c, - * tests/rgb_to_ycbcr.c, - * tests/rgb_to_ycbcr_to_rgb.c, - * tests/u8_to_float.c: s/PixelFormat/Format/ (etc in other cases), - Made BablFish be more polymorphic (accept - format names as well as BablFormats). - * babl/babl-ids.h: reorganized, some renames. - - * tests/srgb_to_lab_u8.c: new test for 8bit CIE Lab format (reference - data not correct yet). - - * babl/base/type-u16.c, - * babl/base/type-u8.c: Added CIE fixed point data types. - - -2005-08-24 Øyvind Kolås - - * docs/babl.css: Added code highlighting classes. - -2005-08-24 Øyvind Kolås - - * NEWS: remove draft for news release, at initial release everything - will be new. - -2005-08-23 Øyvind Kolås - - * docs/Makefile.am: use `tempfile` to create name of temporary file - * docs/tools/xml_insert.sh: use `tempfile` to create name of temporary - file. - -2005-08-23 Øyvind Kolås - - * babl/babl-classes.c, - * babl/babl-classes.h, - * babl/babl-conversion.c, - * babl/babl-fish.h, - * babl/babl-image.c, - * babl/babl-image.h, - * babl/babl-instance.h: Indentation, comments and other cleanup. - -2005-08-23 Øyvind Kolås - - * docs/index-static.html.in: update webdocs. - -2005-08-23 Øyvind Kolås - - * babl/babl-instance.h: babl_class_name is moved to babl-classes.h - * babl/babl-conversion.h: add a method to the conversion class for the - processing with registered functions. - * babl/babl-fish.c: Use above functions. - -2005-08-23 Øyvind Kolås - - * babl/babl-memory.[ch]: added additonal sanity checking (only - handling babl-memory allocated memory in free and realloc.) And added - new function babl_dup (void*), which duplicates an allocation. - * babl/babl-db.h: have an initial database size. - -2005-08-23 Øyvind Kolås - - * babl/babl-classes.c: Update class names to be in sync with enum in - babl-classes.h - -2005-08-23 Øyvind Kolås - - * babl/babl.c: implement ref counting to avoid unneccesary destruction - of static data when multiple instances of babl is used in an - adressspace. - -2005-08-23 Øyvind Kolås - - * tests/Makefile.am: - * tests/babl_class_name.c: new test. - -2005-08-22 Øyvind Kolås - - * babl/babl-classes.h: (BabPixelFormat): only a single BablModel. - * babl/babl-pixel-format.h, - * tests/babl-html-dump.c: accomodate change. - -2005-08-21 Øyvind Kolås - - * docs/.cvsignore: added Makefile and Makefile.in - * docs/graphics/.cvsignore: added Makefile and Makefile.in - * tests/.cvsignore: added babl_html_dump - -2005-08-21 Øyvind Kolås - - * babl/base/Makefile.am: Typo, s/babl-grays/babl-gray/ - -2005-08-21 Øyvind Kolås - - * docs/Makefile.am: Changed which html file is piped through w3m to - generate README. - -2005-08-21 Øyvind Kolås - - * babl/base/model-grayscale.c: removed - * babl/base/model-gray.c: added - * babl/base/Makefile.am: - * docs/graphics/index.html: fixed spelling. - -2005-08-21 Øyvind Kolås - - * docs/LGPL: added (hopefully as a link to ../COPYING) - -2005-08-21 Øyvind Kolås - - * Makefile.am, - * NEWS, - * autogen.sh, - * babl/Makefile.am, - * configure.ac, - * docs/.cvsignore, - * docs/Makefile.am, - * docs/babl.css, - * docs/graphics/.cvsignore, - * docs/graphics/Makefile.am, - * docs/graphics/babl-16x16.svg, - * docs/graphics/babl-48x48.svg, - * docs/graphics/babl-a4poster.svg, - * docs/graphics/index.html, - * README.in, - * docs/index-static.html.in, - * docs/tools/xml_insert.sh, - * tests/babl-html-dump.c, - * tests/Makefile.am: Added HTML based documentation as part of build - process. - -2005-08-21 Øyvind Kolås - - * babl/babl-classes.h: reindent, some documentation. - * babl/babl-fish.c: (babl_fish_reference_new): assertions for - arguments. - * babl/babl-ids.h: cleanup. - * babl/base/babl-base.c: (models): grayscale->gray - * babl/base/model-grayscale.c: (babl_base_model_gray), - (components), (models), (rgb_to_gray), (rgb_to_gray_2_2), - (gray_2_2_to_rgb), (gray_to_rgb), - (gray_alpha_premultiplied_to_rgba), - (rgba_to_gray_alpha_premultiplied), (conversions): grayscale->gray, - added gamma-2.2 with alpha. - * babl/base/model-lab.c: - * babl/base/model-rgb.c: - * babl/base/model-ycbcr.c: Name normalizations - * tests/float_to_u8.c: (test_float_to_rgb_u8): - * tests/grayscale_to_rgb.c: (test): - * tests/rgb_to_lab_to_rgb.c: (test): - * tests/rgb_to_ycbcr.c: (test): - * tests/rgb_to_ycbcr_to_rgb.c: (test): - * tests/u8_to_float.c: (test): Name synchronization. - -2005-08-18 Øyvind Kolås - - * babl/base/util.h: added new and hopefully correct gamma correction - and uncorrection functions. - * babl/base/model-grayscale.c: (components), - (rgb_to_grayscale_2_2), (grayscale_2_2_to_rgb): register - "luminance-gamma2.2" component, and use new gamma functions. - * babl/base/model-rgb.c: (g3_gamma_2_2), (g3_inv_gamma_2_2): use new - gamma functions. - * babl/base/model-ycbcr.c: (components), (models), (rgb_to_ycbcr), - (ycbcr_to_rgb): use gamma corrected luminance, and correct gamma. (pixel_formats): - uncomment until a new data type exist with headroom/footrom in 8bit - for proper rescaling of 0..255 to 16..235 for luma and +/-112 range - with offset of 128 for chroma (16 thorugh 240 inclusive). - * babl/base/rgb-constants.h: more digits as well as some #if 0' dead - code for reference. - * tests/rgb_to_lab_to_rgb.c: add more colors to the test buffer. - * tests/rgb_to_ycbcr.c: set TOLERANCE to a more meaningful value, - updated the ycbcr version of 50% gray. - -2005-08-17 Øyvind Kolås - - * babl/babl-internal.h: (type_name##_id) babl_log upon failed - lookups. - -2005-08-17 Øyvind Kolås - - * Makefile-mini - * babl/Makefile-mini: removed - -2005-08-17 Øyvind Kolås - - * configure.ac: added babl/Makefile to AC_CONFIG_FILES(). - -2005-08-17 Sven Neumann - - * README.in: spelling. - -2005-08-16 Øyvind Kolås - - * babl/base/pixel-formats.c: removed - -2005-08-16 Øyvind Kolås - - * babl/babl-model.c: (model_new) - * babl/babl-pixel-format.c: (pixel_format_new): reordered allocation - to place string (to avoid placing pointers in non aligned adresses). - -2005-08-16 Øyvind Kolås - - * babl/babl-component.c: (component_new, each_babl_component_destroy) allocate - larger chunk, (babl_component_new) removed Babl* switch, - * babl/babl-conversion.c: (conversion_new): removed superflous runtime - warnings. - * babl/babl-fish.c: (babl_fish_process): reindent, added assert for - instance. - * babl/babl-image.c: (image_new, babl_image_new): reindent, - , (babl_image_new_from_linear): added asserts for parameters. - * babl/babl-model.c: (each_babl_model_destroy, model_new): allocate - larger chunk. - * babl/babl-pixel-format.c: (each_babl_pixel_format_destroy, - pixel_format_new): allocate larger chunk. - * babl/babl-sanity.c: (babl_conversion_source): removed FIXME comment - used for helper function just used to make code more readable. - * babl/babl-type.c: (each_babl_type_destroy, type_new): allocate - larger chunk. - -2005-08-16 Øyvind Kolås - - * babl/babl-classes.h: (BablSampling) added static name. - * babl/babl-sampling.c: (babl_sampling_init): initialize names - * babl/babl-introspect.c: (pixel_format_introspect): display sampling - name as well. - -2005-08-16 Øyvind Kolås - - * babl/babl-component.[ch] - * babl/babl-conversion.[ch] - * babl/babl-fish.[ch] - * babl/babl-image.[ch] - * babl/babl-instance.h - * babl/babl-internal.h - * babl/babl-introspect.c - * babl/babl-model.[ch] - * babl/babl-pixel-format.[ch] - * babl/babl-sampling.[ch] - * babl/babl-sanity.c - * babl/babl-type.[ch] - * tests/float_to_u8.c - * tests/grayscale_to_rgb.c - * tests/rgb_to_lab_to_rgb.c - * tests/rgb_to_ycbcr.c - * tests/rgb_to_ycbcr_to_rgb.c - * tests/u8_to_float.c: Changed to use polymorph Babl * union's instead - of class specific structs in most cases, and in all cases for the - public API. - -2005-08-16 Øyvind Kolås - - * AUTHORS: Fixed spelling of Sven Neumann. - -2005-08-16 Øyvind Kolås - - * tests/.cvsignore: added the test binaries. - * .cvsignore: added *.tar.gz and *.tar.bz2 - -2005-08-16 Øyvind Kolås - - * AUTHORS: added Sven Neuman. - -2005-08-16 Sven Neumann - - * configure.ac: add -Wall to CFLAGS if gcc is being used. Use - AC_CONFIG_FILES() to define the files that need to be generated. - -2005-08-16 Øyvind Kolås - - * babl/base/mode-ycbcr.c: use coefficients from Charles Poyntons color - FAQ. - * tests/rgb_to_ycbcr_to_rgb.c: changed TOLERANCE to 0.00000000000001 - * tests/rgb_to_ycbcr.c: changed TOLERANCE as well as reference values. - -2005-08-16 Øyvind Kolås - - * babl/babl-fish.c: reindentation, no naming of fishes. - * babl/babl-ids.h: reordering, added YCBCRA, LAB and LAB_ALPHA - * babl/base/Makefile.am: added cpercep.[ch] model-lab.c and - model-ycbcr.c - * babl/base/cpercep.[ch]: *NEW* - * babl/base/model-lab.c: *NEW* CIE Lab color model, backed by a slightly - modified version of cpercep from gimp sources (no gamma correction and - normalized RGB values) - * babl/base/model-ycbcr: made ycbcr work, numbers still need to be - verified. - * babl/base/babl-base.c: initialize CIE Lab and YCbCr - * babl/base/model-cmyk.c: slight changes, it still doesn't pass - rgb->cmyk->rgb testing so not included yet. - * babl/base/model-rgb.c: make rgba-double use BABL_DOUBLE instead of - BABL_FLOAT - * babl/base/type-u16: fix conversion to double. - * tests/Makefile.am: added rgb_to_lab_to_rgb , rgb_to_ycbcr_to_rgb and - rgb_to_ycbcr - * tests/rgb_to_lab_to_rgb.c - * tests/rgb_to_ycbcr_to_rgb.c - * tests/rgb_to_ycbcr.c: *NEW* tests - -2005-08-15 Øyvind Kolås - - * babl/base/model-cmyk.c - * babl/base/model-ycbcr.c: added stubs - -2005-08-15 Øyvind Kolås - - * configure.ac: add rule to generate babl/base/Makefile - * babl/base: new directory - * babl/base/Makefile.am - * babl/base/babl-base.[ch] - * babl/base/type-double.c - * babl/base/type-float.c - * babl/base/type-u8.c - * babl/base/type-u16.c - * babl/base/model-rgb.c - * babl/base/model-grayscale.c - * babl/base/.cvsignore: added code removed in previous commit, in - a more oragnised manner. - - -2005-08-15 Øyvind Kolås - - * babl/babl-base/babl-base.[ch] - * babl/babl-base/babl-base-components.c - * babl/babl-base/babl-base-conversions.c - * babl/babl-base/babl-base-conversions-model.c - * babl/babl-base/babl-base-conversions-type.c - * babl/babl-base/babl-base-models.c - * babl/babl-base/babl-base-pixel-formats.c - * babl/babl-base/babl-base-types.c - * babl/babl-base/Makefile.am - * babl/babl-base/: removed - -2005-08-15 Øyvind Kolås - - * babl/babl-classes.h: BablPixelFormat: changed order of attributes to - match BablModel. BablFish: removed **from and **to lists, since they - were added at a wrong offset from the instance start anyways. - * babl/babl-fish.c: Made the reference fish work for linear buffers - with constant datatype - * babl/babl-ids.h: added BABL_RGBA_DOUBLE - * babl/babl-image.[ch]: made BablImage be allocated in a single chunk, - added babl_image_new_from_linear() - * babl/babl-type.c: added assertion about bits%8==0 - * babl/babl-base/babl-base-conversions-model.c: made BABL_PLANAR_SANITY accept - single band buffers. added conversions for premultiplied grayscale. - * babl/babl-base/babl-base-pixel-formats.c: added "rgba-double" - -2005-08-15 Øyvind Kolås - - * Makefile-mini: compile both the nop and introspect programs by - default. - * babl/Makefile-mini: link with standard math library - -2005-08-14 Øyvind Kolås - - * tests/float_to_u8.c - * tests/u8_to_float.c - * tests/grayscale_to_rgb.c: new files - * tests/Makefile.am: including preceding tests - -2005-08-14 Øyvind Kolås - - * babl/Makefile.am: added babl-instance.h, removed wilcard from - EXTRA_DIST - * babl/babl-classes.h: added BablModel **model to BablPixelFormat, - renamed BablReferenceFish to BablFishReference. Moved some logic out - to babl-instance.h. - * babl/babl-instance.h: new file. - * babl/babl-db.h: include babl-instance instead of babl-classes to - reduce amount of headers included by headers. - * babl/babl-fish.c: Added code to make it work for type conversions - * babl/babl-fish.h: Added babl_fish (source, destination) prototype - * babl/babl-internal.h: reindentation, include babl-conversion.h - * babl/babl-pixel-format.c: add model for each band - * babl/babl.c: destroy all fishes at finish - -2005-08-14 Øyvind Kolås - - * babl/babl-base/Makefile.am: LDADD = -lm - * babl/babl-base/babl-base-conversions-model.c: reindentation, added - gamma functions. - * babl/babl-base/babl-base-conversions-type.c: corrected reference - versions of u8, u16 and float. - * babl/babl-base/babl-base-models.c: ifdef'ed out some of the more - arcane models. - * babl/babl-base/babl-base-pixel-formats.c: added the corresponding - model used to all pixel formats. - -2005-08-09 Øyvind Kolås - - * babl/Makefile-mini: CFLAGS = -Werror -Wall .... - * babl/babl-classes.[ch]: BablPixelFormat removed unused pointers - to lists of conversions. Added BablReferenceFish. Renamed kind/ - instance.type to class_type/instance.class_type. Removed mostly - unused macro's and expanded them in source - - * babl/babl-component.c - * babl/babl-conversion.c - * babl/babl-db.h - * babl/babl-fish.c - * babl/babl-image.c - * babl/babl-introspect.c - * babl/babl-model.c - * babl/babl-pixel-format.c - * babl/babl-sampling.c - - * babl/babl-type.c: removed switch statement since all enums are - handled equally. - - * babl/tests/Makefile.am: added nop and introspect to TESTS, not - actual tests yet, but at least a segfault will cause make check to - fail. - -2005-08-09 Øyvind Kolås - - * autogen.sh: make autogen also run make - * babl/babl-classes.h: added define macro usable for sampling and - fish. - * babl/babl-fish.[ch]: cleanup of stub class - * babl/babl-sampling.h: simplification of header using a define. - -2005-08-09 Øyvind Kolås - - * babl/babl-conversion.c: indentation cleanup. - -2005-08-09 Øyvind Kolås - - * babl/babl-ids: added BABL_LUMINANCE_GAMMA_2_2, - BABL_LUMINANCE_MUL_ALPHA, BABL_GRAYSCALE_GAMMA_2_2, - BABL_GRAYSCALE_ALPHA_PREMULTIPLIED. - * babl/babl-base/babl-base-components: added "luminance*alpha" - * babl/babl-base/babl-base-components.conversions-model.c: Sprinked - asserts, added generic premultiplification operation. - * babl/babl-base-models.c: added gamma corrected and premultiplied - variations of grayscale. - -2005-08-09 Øyvind Kolås - - * babl/babl-internal.h: issue a babl_log when the named object is not - found during string based lookup. - * babl/babl-pixel-format.c: added BABL_IMAGE to var_args switch. - * babl/babl-classes.c: set babl_hmpf_on_name_lookups initial value to - 0, to make it hmpf only in babl-base. - -2005-08-09 Øyvind Kolås - - * babl/Makefile-mini: added babl-image.o. - -2005-08-09 Øyvind Kolås - - * babl/babl-sampling.h: removed reference to non existant function - babl_sampling_introspect (). - -2005-08-09 Øyvind Kolås - - * babl/Makefile.am - * babl/babl-image.c - * babl/babl-image.h - * babl/babl-classes.h: Added BablImage class. - - * babl/babl-component.c - * babl/babl-conversion.c - * babl/babl-model.c: Handle BABL_IMAGE in switches. - - -2005-08-09 Øyvind Kolås - - * .cvsignore: added INSTALL and README. - -2005-08-09 Øyvind Kolås - - * depcomp - * install-sh - * missing: erroniously included in first import. - -2005-08-09 Øyvind Kolås - - Imported into GNOME CVS. - -2005-08-09 Øyvind Kolås - - - seperate babl-base into separate subdir. - -2005-08-09 Øyvind Kolås - - - Renamed class to model. - - Auto toolification - -2005-08-08 Øyvind Kolås - - - Completed data model - - Added sanity checker - -2005-08-07 Øyvind Kolås - - - Introspection - -2005-08-05 Øyvind Kolås - - - Initial ChangeLog - -2005-07-31 Øyvind Kolås - - - Type system - -2005-07-29 Øyvind Kolås - - - Babl's inception in the 'Chaos Village' at WhatTheHack. - diff --git a/INSTALL b/INSTALL index 5212bd4..7992295 100644 --- a/INSTALL +++ b/INSTALL @@ -1,5 +1,5 @@ -babl 0.1.8 +babl 0.1.10 Dynamic; any to any, pixel format conversion library. @@ -12,10 +12,10 @@ From a released version the following is the expected method of installation (or a variation on this theme): ------------------------------------------------------------ - foo$ wget ftp://ftp.gtk.org/pub/babl/0.1/babl-0.1.8.tar.bz2 - foo$ tar jxf babl-0.1.8.tar.gz - foo$ cd babl-0.1.8 - foo/babl-0.1.8$ ./configure && make && sudo make install + foo$ wget ftp://ftp.gtk.org/pub/babl/0.1/babl-0.1.10.tar.bz2 + foo$ tar jxf babl-0.1.10.tar.gz + foo$ cd babl-0.1.10 + foo/babl-0.1.10$ ./configure && make && sudo make install ------------------------------------------------------------ diff --git a/Makefile.am b/Makefile.am index 840872e..19df326 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,13 +14,11 @@ built_dist_files = README EXTRA_DIST = \ $(built_dist_files) \ - ChangeLog.pre-0-1 \ AUTHORS \ COPYING \ INSTALL \ NEWS \ TODO \ - ChangeLog \ autogen.sh \ m4/introspection.m4 \ babl.pc.in @@ -51,25 +49,3 @@ distclean-local: rm -f $(BUILT_EXTRA_DIST); \ fi - - -### ChangeLog generation - -CHANGELOG_START = BABL_0_1_0 - -ChangeLog: $(srcdir)/ChangeLog -$(srcdir)/ChangeLog: - @echo Creating $@ - @if test -d "$(srcdir)/.git"; then \ - (GIT_DIR=$(top_srcdir)/.git ./missing --run \ - git log $(CHANGELOG_START)^.. --stat) | fmt --split-only > $@.tmp \ - && mv -f $@.tmp $@ \ - || ($(RM) $@.tmp; \ - echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \ - (test -f $@ || echo git-log is required to generate this file >> $@)); \ - else \ - test -f $@ || \ - (echo A git checkout and git-log is required to generate ChangeLog >&2 && \ - echo A git checkout and git-log is required to generate this file >> $@); \ - fi -.PHONY: $(srcdir)/ChangeLog diff --git a/Makefile.in b/Makefile.in index dc9d63e..ee7ae61 100644 --- a/Makefile.in +++ b/Makefile.in @@ -311,13 +311,11 @@ pkgconfig_DATA = babl.pc built_dist_files = README EXTRA_DIST = \ $(built_dist_files) \ - ChangeLog.pre-0-1 \ AUTHORS \ COPYING \ INSTALL \ NEWS \ TODO \ - ChangeLog \ autogen.sh \ m4/introspection.m4 \ babl.pc.in @@ -326,9 +324,6 @@ DISTCLEANFILES = \ $(built_dist_files) \ babl.pc - -### ChangeLog generation -CHANGELOG_START = BABL_0_1_0 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -887,23 +882,6 @@ distclean-local: rm -f $(BUILT_EXTRA_DIST); \ fi -ChangeLog: $(srcdir)/ChangeLog -$(srcdir)/ChangeLog: - @echo Creating $@ - @if test -d "$(srcdir)/.git"; then \ - (GIT_DIR=$(top_srcdir)/.git ./missing --run \ - git log $(CHANGELOG_START)^.. --stat) | fmt --split-only > $@.tmp \ - && mv -f $@.tmp $@ \ - || ($(RM) $@.tmp; \ - echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \ - (test -f $@ || echo git-log is required to generate this file >> $@)); \ - else \ - test -f $@ || \ - (echo A git checkout and git-log is required to generate ChangeLog >&2 && \ - echo A git checkout and git-log is required to generate this file >> $@); \ - fi -.PHONY: $(srcdir)/ChangeLog - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/NEWS b/NEWS index 506c2f1..a123cc3 100644 --- a/NEWS +++ b/NEWS @@ -5,7 +5,9 @@ the news section both in the README and the webpage. --> - +2012-03-30 babl-0.1.8
+LUT based speedups for gamma correction / uncorrection. +
2012-03-30 babl-0.1.8
Added support for indexed/pallette based formats, constified API.
diff --git a/README b/README index b205cb9..1583b95 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Babl-0.1.8 +Babl-0.1.10 Contents @@ -59,6 +59,8 @@ babl release. If there are significant improvements to babl when a GEGL release is done a babl release is most often put out just prior to the GEGL release. +2012-03-30 babl-0.1.8 + LUT based speedups for gamma correction / uncorrection. 2012-03-30 babl-0.1.8 Added support for indexed/pallette based formats, constified API. 2011-11-18 babl-0.1.6 @@ -1220,19 +1222,6 @@ components u8 R'a u8 A -B'aG'aR'aPAD u8 - -bytes/pixel - 4 -model - R'G'B' -components - - u8 B' - u8 G' - u8 R' - u8 PAD - Shortcut Coverage The diagram shown below visualizes the coverage of current shortcut @@ -1241,81 +1230,80 @@ height of the bar indicates the number of conversions steps needed in a chain of conversions. A DHTML version is also available. - ·· ·▁·· ··· ▁ ▂ ▁▁ ▁ ···· · ── 0 RGBA double - ── 1 RGB double - ── 2 RaGaBaA double - ── 3 R'G'B' double -· ▁ ▁▂▁▁ ▁▁▁ · ▁ ▂▂ ▂ ▁▁▁▁ ▁ ── 4 R'G'B'A double -· ▁▂▁▁ ▁▁ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ── 5 R'aG'aB'aA double -▂ ▂ ·▁·▃▃ ▃▃▂ ▁ ▁ ·· ▂▁ ▃ ▁ ▂▃▂▂ ▃ ── 6 R'G'B' u8 -▁ ▁▂ ·▁▂▂ ▂▂▂ · ▁ ▁ ▁▁ ▁ ▂▂▂▂ ▃ ── 7 R'G'B'A u8 -· ▁▁ ·▁▁ ▁▁▁ ▂ ▃ ·· · ▁▁▁▁ ▁ ── 8 RGBA float -▁ ▃▂ ▂▂ ▂▃▂ ▃ ▂▁ ▂ ▁ ▂▂▂▂ ▂ ── 9 RGB float -· ▁▁ ▁ ▁ ▁▁▁ ▂ ▃ ▃ ▂▂ ▃ ▂ ▁▁▁▁ ▁ ──10 Y double -· ▁▁ ▁▂ ▁▁▁ ▂ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ──11 YA double - ──12 YaA double - ──13 Y' double - ──14 Y'A double -· ▁▁ ▁▂▁▁ ▁▁ ▂ ▃ ▂▂ ▃ ▁▁▁▁ ▁ ──15 Y'aA double -· ▁▁ ▁▂▁▁ ▁ ▂ ▃ ▃ ▂▂ ▃ ▂ ▁▁▁▁ ▁ ──16 Y'CbCr double -· ▁▁ ▁▂▁▁ ▁ ▂ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ──17 Y'CbCrA double - ──18 Y'CbCr u8 -▁ ·▂ ▂▃▂▂ ▂▂▂ · ▃▃ ▃ ▂▂▂ ▂ ──19 R'G'B'A float -▂ ▁▃ ▃ ▃▃ ▃▃▃ ▁ ▁ ▃▃▃▃ ▃ ──20 R'G'B'A u16 - ▃▃▃▃ ──21 R'aG'aB'aA float -▃ ▂ ▁ ▂ ──22 R'aG'aB'aA u16 -▃ ▂ ▁ · ▂ ──23 R'aG'aB'aA u8 -▂ ▁▃ ▃ ▃▃ ▃▃▃ · · ▃▃▃▃ ▃ ──24 R'G'B' float -▃ ▂ ▂ ▁ ──25 R'G'B' u16 - ▁ · ▁ ▁ ·· ▂ ▁ ──26 Y'A float - ▂ ▁ · ▂ ▁ ▁ · ──27 Y'aA float - ▂ ▁ ▁ · · ──28 Y' float - ▂ ▁ ▂ ▂ ·▂ ▃ ▂ ──29 Y'A u16 - ▃ ▂ ▁ ▃ ▁·▂ ▁ ──30 Y'aA u16 - ▃ ▂ ▂ ▁ ▁▂· ──31 Y' u16 -▂ ▂▃ ·▂▃▂ ▂▂▂ ▁ ▂ ▂ ·▁▁ ▃ ▃ ▁▂ ▁·▁▁ ▃▃▃▂ ▂ ──32 Y'A u8 - ▃ ▂ ▁ ▃ ▁·▂ · ──33 Y'aA u8 -▁ ▃▂ ▂▁▂▂ ▂▂▂ ▂ ▃ ▃ ▁▂· ▁▃ ▂ ▃▁▂· ▂▂▂▂ ▂ ──34 Y' u8 -▃ ▂ ▁ ▂ · ──35 Y'CbCr float -▂ ▁▃ ▃ ▃▃ ▃▃ · ▁ ▃▃▃▃ ▃ ──36 Y'CbCrA float -▁ ▂▂ ·▁▂▂ ▂▂▂ ▃ ▁▁ ▁ ▂▂▂▂ ▂ ──37 RGBA u16 -▁ ▂▂ ·▁▂▂ ▂▂▂ ▃ ▁ · ▂▂▂▂ ▂ ──38 RGBA u8 -▁ ▂▂ ·▁▂▂ ▂▂▂ ▃ ▁ ▂▂▂▂ ▂ ──39 RaGaBaA float -▂ ▃▃ ▁▂▃▃ ▃▃▃ ▂ ▂ ▃▃▃▃ ▃ ──40 RaGaBaA u16 -▂ ▃▃ ▁▂▃▃ ▃▃▃ · ▃▃▃▃ ▃ ──41 RaGaBaA u8 -▃ ▃▃ ▂·▃▃ ▃▃▃ ▃▁ ▂ ▃▃▃▃ ▃ ──42 RGB u16 -▂ ▃▂ ▁·▃▃ ▃▃▃ ▃ ·▂ · ▃▃▃▂ ▃ ──43 RGB u8 -▁ ▂▂ ·▁▂ ▂▂▂ ▃ ▁▁ ·· ▂▂▂▂ ▂ ──44 YA float -▂ ▃▃ ▁▂▃▃ ▃▃▃ ▂· ▂ ▃▃▃▃ ▃ ──45 YaA float -▂ ▃▃ ▁· ▃ ▃▃▃ ▂▂ ▃ ▂· ▃▃▃▃ ▃ ──46 Y float -▂ ▃▃ ▁▂▃▃ ▃▃▃ ▂▂ ▂·▁ ▃▃▃▃ ▃ ──47 YA u16 -▃ ▂▃ ▃▁ ▃ · ──48 YaA u16 -▃ ▂▁ ▃▂ ▃▁▁· ──49 Y u16 -▂ ▂▂ ▁▂▃▃ ▃▃▃ ▃ ▁▂ ▂·▁▁ ▃▃▃▂ ▃ ──50 YA u8 -▃ ▂▃ ▁ ▁·▂ ──51 YaA u8 -▃ ▂▂ ·▁▂▂ ▂▂▂ ▃ ▁▃ ▂ ▃▁▂· ▂▂▂▂ ▂ ──52 Y u8 -· ▁▁ ▁▂▁▁ ▁▁▁ ▂ ▃ ▃ ▂▂ ▃ ▂ ▁▁▁ ▁ ──53 CIE Lab double -· ▁▁ ▁▂▁▁ ▁▁▁ ▂ ▃ ▂▂ ▂ ▁▁ ▁ ──54 CIE Lab alpha double -· ▁▁ ▁▂▁▁ ▁▁▁ ▂ ▃ ▃ ▃▂ ▃ ▂ ▁ ▁ ▁ ──55 CIE LCH(ab) double -· ▁▁ ▁▂▁▁ ▁▁▁ ▂ ▃ ▂▂ ▂ ▁▁ ▁ ──56 CIE LCH(ab) alpha double - ──57 CIE Lab float - ──58 CIE Lab alpha float - ──59 CIE Lab u8 - ──60 CIE Lab u16 - ──61 CIE LCH(ab) float - ──62 CIE LCH(ab) alpha float - ──63 cairo-ARGB32 - ──64 cairo-RGB24 - ──65 cairo-A8 -· ▁▁ ▁▂▁▁ ▁▁ ▂ ▃ ▃ ▃▂ ▃ ▂ ▁▁▁▁ ──66 CMYK double - ──67 CMYK float - ──68 B'aG'aR'aA u8 - ──69 B'aG'aR'aPAD u8 -|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -||||||||||111111111122222222223333333333444444444455555555556666666666 -0123456789012345678901234567890123456789012345678901234567890123456789 -total length: 2172 -total cost : 408270 + ··▂▂·▁·· ··· ▁ ▁ ▂ ▁▁ ▁ ···· · ── 0 RGBA double + ── 1 RGB double + ── 2 RaGaBaA double + ── 3 R'G'B' double +· ▁▁▁▁▂▁▁ ▁▁▁ · ▂ ▁ ▂▂ ▂ ▁▁▁▁ ▁ ── 4 R'G'B'A double +· ▃▃▁▂▁▁ ▁▁▁ ▂ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ── 5 R'aG'aB'aA double +▂ ▂ ··▂▃▃ ▂▃▂ ▁ ▁ ·· ▁▂ ▃ ▂ ▂▂▃▃ ▃ ── 6 R'G'B' u8 +▁ ▁▂ ·▁▃▂ ▃▃▂ · ▁ ▁ ▁▁ ▁ ▂▂▃▂ ▃ ── 7 R'G'B'A u8 +· ▁▁▁ ·▁▁ ▁▁▁ ▂ · ▁ ·· · ▁▁▁▁ ▁ ── 8 RGBA float +▁ ▂▂▂▂ ▂▂ ▂▂▂ ▃ ▁ ▃· ▁· ▂ ▁ ▂▃▂▂ ▂ ── 9 RGB float +· ▁▁▃▃▁ ▁ ▁▁▁ ▂ ▃ ▃ ▂▂ ▃ ▂ ▁▁▁▁ ▁ ──10 Y double +· ▁▁▃▃▁▂ ▁▁▁ ▂ ▂ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ──11 YA double + ──12 YaA double + ──13 Y' double + ──14 Y'A double +· ▁▁▃▃▁▂▁▁ ▁▁ ▂ ▂ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ──15 Y'aA double +· ▁▁▃▃▁▂▁▁ ▁ ▂ ▃ ▃ ▃▂ ▃ ▂ ▁▁▁▁ ▁ ──16 Y'CbCr double + ▁▁▃▃▁▂▁▁ ▁ ▂ ▂ ▃ ▂▂ ▂ ▁▁▁▁ ▁ ──17 Y'CbCrA double + ──18 Y'CbCr u8 +▁ ·▂···▁▂▂ ▃▂▂ ▁ · ▁▁ ▃ ▂▂▂▂ ▂ ──19 R'G'B'A float +▂ ▁▃▁▁▁▂▃▃ ▃▃▃ ▁ ▁ ▂▂ ▃ ▃▃▃▃ ▃ ──20 R'G'B'A u16 + ▁▁ ▂ ▃ ▃▃▃▃ ──21 R'aG'aB'aA float +▃ ▂ ▂▃ ▁ ▂ ▃▃ ▃ ──22 R'aG'aB'aA u16 +▃ ▂ ▂▃ ▁ · ▂ ▃▃ ▃ ──23 R'aG'aB'aA u8 +▃ ▁▃▁▁▁▃▃▃ ▃▃▃ · · ▃▃ ▃ ▃ ▃▃▃▃ ▃ ──24 R'G'B' float +▃ ▂ ▂▃▃▁ ▁ ▁ ▃ ▃▃ ▃ ──25 R'G'B' u16 + ▁ ▃▁ · ▁ ▁ ·· ▂ ▁ ──26 Y'A float + ▂ ▂▂ ▁ · ▂ ▁ ▁ · ──27 Y'aA float + ▂ ▂▂ ▁ ▂ ▃▃ · ──28 Y' float + ▂ ▂▂ ▁ ▂ ▂ ·▁ ▃ ▂ ──29 Y'A u16 + ▃ ▃▃ ▂ ▁ ▃ ▁·▂ ▁ ──30 Y'aA u16 + ▃ ▃▃ ▃ ▂ ▁ ▁▁· ──31 Y' u16 +▂ ▂▂▂▂▁▁▃▃ ▂▃▂ ▁ ▂ ▂ ·▁▁ ▃ ▃ ▂▂ ▁·▁▁ ▂▃▂▂ ▂ ──32 Y'A u8 + ▃ ▂ ▁ ▃ ▁·▂ · ──33 Y'aA u8 +▃ ▃▂▃▃▃▃▂▂ ▂▂▂ ▂ ▂ ▃▁ ▁▁· ▃▃ ▂ ▁▁▂· ▂▂▂▂ ▂ ──34 Y' u8 +▃ ▂ ▂▂▃▁ ▁ ▁ ▃· ▃▃ ▃ ──35 Y'CbCr float +▂ ▁▃▁▁▁▂▃▃ ▃▃ · ▂ ▁ ▂▂ ▃ ▃▃▃▃ ▃ ──36 Y'CbCrA float +▁ ▂▂▂▂·▁▂▂ ▂▂▂ ▁ ▁ ▂ ▁▁ ▁ ▂▂▂▂ ▂ ──37 RGBA u16 +▁ ▂▂▂▂·▁▂▂ ▂▂▂ ▁ ▁ ▂ ▁ · ▃▂▂▂ ▂ ──38 RGBA u8 +▁ ▂▂▂▂·▁▂▂ ▂▂▂ ▁ ▁ ▂ ▁ ▂▂▂▂ ▂ ──39 RaGaBaA float +▂ ▃▃▃▃▁▂▃▃ ▃▃▃ ▂ ▂ ▃ ▂ ▂ ▃▃▃▃ ▃ ──40 RaGaBaA u16 +▂ ▃▃▃▃▁▂▃▃ ▃▃▃ ▂ ▂ ▃ · ▃▃▃▃ ▃ ──41 RaGaBaA u8 +▂ ▃▃▃▃▁·▃▃ ▃▃▃ ▂ ▃ ▁ ▃▂ ▂ ▃▃▃▃ ▃ ──42 RGB u16 +▁ ▂▃▃▃▁·▂▃ ▃▃▂ ▂ ▃ ▃▁ ·▁ · ▃▃▃▃ ▃ ──43 RGB u8 +▁ ▂▂▂▂·▁▂ ▂▂▂ ▁ ▁ ▂ ▁▁ ·· ▂▂▂▂ ▂ ──44 YA float +▂ ▃▃▃▃▁▂▃▃ ▃▃▃ ▂ ▂ ▃ ▂· ▂ ▃▃▃▃ ▃ ──45 YaA float +▂ ▃▃▃▃▃▂ ▃ ▃▃▃ ▂ ▂ ▃ ▂▂ ▃ ▂· ▃▃▃▃ ▃ ──46 Y float +▂ ▃▃▃▃▁▂▃▃ ▃▃▃ ▂ ▂ ▃ ▂▂ ▂·▁ ▃▃▃▃ ▃ ──47 YA u16 +▃ ▂▃ ▃ ▃ ▃▁ ▃ · ──48 YaA u16 +▃ ▂▁ ▃ ▃ ▂ ▃▂ ▃▁▁· ──49 Y u16 +▁ ▃▃▃▃·▂▃▃ ▃▃▃ ▁ ▁ ▂ ▂▂ ▁·▁▁ ▃▂▃▃ ▂ ──50 YA u8 +▃ ▂▃ ▃ ▃ ▁ ▁·▂ ──51 YaA u8 +▁ ▂▂▂▃▂▁▂▂ ▂▂▂ ▁ ▃ ▃▂ ▃▃ ▂ ▃▁▁· ▂▂▂▂ ▂ ──52 Y u8 +· ▁▁▃▃▁▂▁▁ ▁▁▁ ▂ ▃ ▃ ▂▂ ▃ ▂ ▁▁▁ ▁ ──53 CIE Lab double +· ▁▁▃▃▁▂▁▁ ▁▁▁ ▂ ▂ ▃ ▂▂ ▂ ▁ ▁ ──54 CIE Lab alpha double +· ▁▁▃▃▁▂▁▁ ▁▁▁ ▂ ▃ ▃ ▂▂ ▃ ▂ ▁ ▁ ▁ ──55 CIE LCH(ab) double +· ▁▁▃▃▁▂▁▁ ▁▁▁ ▂ ▂ ▃ ▂▂ ▂ ▁▁ ▁ ──56 CIE LCH(ab) alpha double + ──57 CIE Lab float + ──58 CIE Lab alpha float + ──59 CIE Lab u8 + ──60 CIE Lab u16 + ──61 CIE LCH(ab) float + ──62 CIE LCH(ab) alpha float + ──63 cairo-ARGB32 + ──64 cairo-RGB24 + ──65 cairo-A8 +· ▁▁▃▃▁▂▁▁ ▁▁▁ ▂ ▃ ▃ ▃▂ ▃ ▂ ▁▁▁▁ ──66 CMYK double + ──67 CMYK float + ──68 B'aG'aR'aA u8 +||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +||||||||||11111111112222222222333333333344444444445555555555666666666 +012345678901234567890123456789012345678901234567890123456789012345678 +total length: 2751 +total cost : 504960 Environment @@ -1418,4 +1406,4 @@ Daniel Paredes García danipga at gmail.com Rupert Weber gimp at leguanease.org Documentation and other improvements -/babl-0.1.8 +/babl-0.1.10 diff --git a/babl/babl-conversion.c b/babl/babl-conversion.c index 15beb91..4f68aaa 100644 --- a/babl/babl-conversion.c +++ b/babl/babl-conversion.c @@ -429,7 +429,7 @@ babl_conversion_process (const Babl *babl, return n; } -#define test_pixels 512 +#define test_pixels 128 static double * diff --git a/babl/babl-version.h b/babl/babl-version.h index f8025b2..75a7c29 100644 --- a/babl/babl-version.h +++ b/babl/babl-version.h @@ -34,7 +34,7 @@ #define BABL_MAJOR_VERSION 0 #define BABL_MINOR_VERSION 1 -#define BABL_MICRO_VERSION 8 +#define BABL_MICRO_VERSION 10 /** Get the version information on the babl library */ void babl_get_version (int *major, diff --git a/babl/base/model-rgb.c b/babl/base/model-rgb.c index 8de970e..df7f7b0 100644 --- a/babl/base/model-rgb.c +++ b/babl/base/model-rgb.c @@ -285,16 +285,16 @@ premultiplied_to_non_premultiplied (int src_bands, int band; alpha = *(double *) src[src_bands - 1]; - for (band = 0; band < src_bands - 1; band++) + if (alpha > BABL_ALPHA_THRESHOLD) { - if (alpha > BABL_ALPHA_THRESHOLD) - { - *(double *) dst[band] = *(double *) src[band] / alpha; - } - else - { - *(double *) dst[band] = 0.00; - } + double recip_alpha = 1.0 / alpha; + for (band = 0; band < src_bands - 1; band++) + *(double *) dst[band] = *(double *) src[band] * recip_alpha; + } + else + { + for (band = 0; band < src_bands - 1; band++) + *(double *) dst[band] = 0.0; } *(double *) dst[dst_bands - 1] = alpha; diff --git a/babl/base/util.h b/babl/base/util.h index 7ccaf8f..a229894 100644 --- a/babl/base/util.h +++ b/babl/base/util.h @@ -16,8 +16,8 @@ * . */ -#ifndef _UTIL_H -#define _UTIL_H +#ifndef _BASE_UTIL_H +#define _BASE_UTIL_H #include #include @@ -56,12 +56,29 @@ #ifdef BABL_USE_SRGB_GAMMA +/* fast approximation of x ^ (5/12) from a response by David Hammen at + * http://stackoverflow.com/questions/6475373/optimizations-for-pow-with-const-non-integer-exponent/6475516#6475516 + * + */ +static inline double xpow512 (double x) +{ + double cbrtx = cbrt(x); + return cbrtx*sqrt(sqrt(cbrtx)); +} + + static inline double linear_to_gamma_2_2 (double value) { +#if 0 if (value > 0.0030402477F) return 1.055F * pow (value, (1.0F/2.4F)) - 0.055F; return 12.92F * value; +#else + if (value > 0.0030402477F) + return 1.055F * xpow512 (value) - 0.055F; + return 12.92F * value; +#endif } static inline double diff --git a/configure b/configure index d96bf91..078dcc4 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for babl 0.1.8. +# Generated by GNU Autoconf 2.68 for babl 0.1.10. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -567,8 +567,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='babl' PACKAGE_TARNAME='babl' -PACKAGE_VERSION='0.1.8' -PACKAGE_STRING='babl 0.1.8' +PACKAGE_VERSION='0.1.10' +PACKAGE_STRING='babl 0.1.10' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1353,7 +1353,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures babl 0.1.8 to adapt to many kinds of systems. +\`configure' configures babl 0.1.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1423,7 +1423,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of babl 0.1.8:";; + short | recursive ) echo "Configuration of babl 0.1.10:";; esac cat <<\_ACEOF @@ -1539,7 +1539,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -babl configure 0.1.8 +babl configure 0.1.10 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1904,7 +1904,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by babl $as_me 0.1.8, which was +It was created by babl $as_me 0.1.10, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2260,11 +2260,11 @@ ac_config_headers="$ac_config_headers config.h" BABL_MAJOR_VERSION=0 BABL_MINOR_VERSION=1 -BABL_MICRO_VERSION=8 +BABL_MICRO_VERSION=10 BABL_INTERFACE_AGE=1 -BABL_BINARY_AGE=108 -BABL_VERSION=0.1.8 -BABL_REAL_VERSION=0.1.8 +BABL_BINARY_AGE=110 +BABL_VERSION=0.1.10 +BABL_REAL_VERSION=0.1.10 BABL_API_VERSION=0.1 @@ -2585,7 +2585,7 @@ fi -BABL_LIBRARY_VERSION="107:1:107" +BABL_LIBRARY_VERSION="109:1:109" BABL_CURRENT_MINUS_AGE=0 @@ -3058,7 +3058,7 @@ fi # Define the identity of the package. PACKAGE='babl' - VERSION='0.1.8' + VERSION='0.1.10' # Some tools Automake needs. @@ -14485,7 +14485,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by babl $as_me 0.1.8, which was +This file was extended by babl $as_me 0.1.10, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14551,7 +14551,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -babl config.status 0.1.8 +babl config.status 0.1.10 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 3d9974a..26b02da 100644 --- a/configure.ac +++ b/configure.ac @@ -14,7 +14,7 @@ AC_PREREQ(2.54) m4_define([babl_major_version], [0]) m4_define([babl_minor_version], [1]) -m4_define([babl_micro_version], [8]) +m4_define([babl_micro_version], [10]) m4_define([babl_real_version], [babl_major_version.babl_minor_version.babl_micro_version]) m4_define([babl_version], [babl_real_version]) diff --git a/extensions/Makefile.am b/extensions/Makefile.am index fac0123..4d2d4cb 100644 --- a/extensions/Makefile.am +++ b/extensions/Makefile.am @@ -6,6 +6,7 @@ endif noinst_HEADERS = util.h + AM_CPPFLAGS = \ -I$(top_builddir) \ -I$(top_srcdir) \ @@ -20,6 +21,8 @@ ext_LTLIBRARIES = \ gggl-lies.la \ gggl.la \ gimp-8bit.la \ + float.la \ + fast-float.la \ naive-CMYK.la \ sse-fixups.la @@ -31,6 +34,8 @@ gggl_la_SOURCES = gggl.c gimp_8bit_la_SOURCES = gimp-8bit.c naive_CMYK_la_SOURCES = naive-CMYK.c sse_fixups_la_SOURCES = sse-fixups.c +float_la_SOURCES = float.c +fast_float_la_SOURCES = fast-float.c LIBS = $(top_builddir)/babl/libbabl-@BABL_API_VERSION@.la $(MATH_LIB) diff --git a/extensions/Makefile.in b/extensions/Makefile.in index ce45e71..adb2998 100644 --- a/extensions/Makefile.in +++ b/extensions/Makefile.in @@ -88,6 +88,12 @@ am__v_lt_0 = --silent cairo_la_LIBADD = am_cairo_la_OBJECTS = cairo.lo cairo_la_OBJECTS = $(am_cairo_la_OBJECTS) +fast_float_la_LIBADD = +am_fast_float_la_OBJECTS = fast-float.lo +fast_float_la_OBJECTS = $(am_fast_float_la_OBJECTS) +float_la_LIBADD = +am_float_la_OBJECTS = float.lo +float_la_OBJECTS = $(am_float_la_OBJECTS) gegl_fixups_la_LIBADD = am_gegl_fixups_la_OBJECTS = gegl-fixups.lo gegl_fixups_la_OBJECTS = $(am_gegl_fixups_la_OBJECTS) @@ -136,10 +142,12 @@ AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(CIE_la_SOURCES) $(cairo_la_SOURCES) \ + $(fast_float_la_SOURCES) $(float_la_SOURCES) \ $(gegl_fixups_la_SOURCES) $(gggl_lies_la_SOURCES) \ $(gggl_la_SOURCES) $(gimp_8bit_la_SOURCES) \ $(naive_CMYK_la_SOURCES) $(sse_fixups_la_SOURCES) DIST_SOURCES = $(CIE_la_SOURCES) $(cairo_la_SOURCES) \ + $(fast_float_la_SOURCES) $(float_la_SOURCES) \ $(gegl_fixups_la_SOURCES) $(gggl_lies_la_SOURCES) \ $(gggl_la_SOURCES) $(gimp_8bit_la_SOURCES) \ $(naive_CMYK_la_SOURCES) $(sse_fixups_la_SOURCES) @@ -315,6 +323,8 @@ ext_LTLIBRARIES = \ gggl-lies.la \ gggl.la \ gimp-8bit.la \ + float.la \ + fast-float.la \ naive-CMYK.la \ sse-fixups.la @@ -326,6 +336,8 @@ gggl_la_SOURCES = gggl.c gimp_8bit_la_SOURCES = gimp-8bit.c naive_CMYK_la_SOURCES = naive-CMYK.c sse_fixups_la_SOURCES = sse-fixups.c +float_la_SOURCES = float.c +fast_float_la_SOURCES = fast-float.c sse_fixups_la_CFLAGS = $(MMX_EXTRA_CFLAGS) $(SSE_EXTRA_CFLAGS) all: all-am @@ -396,6 +408,10 @@ CIE.la: $(CIE_la_OBJECTS) $(CIE_la_DEPENDENCIES) $(EXTRA_CIE_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(extdir) $(CIE_la_OBJECTS) $(CIE_la_LIBADD) $(LIBS) cairo.la: $(cairo_la_OBJECTS) $(cairo_la_DEPENDENCIES) $(EXTRA_cairo_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(extdir) $(cairo_la_OBJECTS) $(cairo_la_LIBADD) $(LIBS) +fast-float.la: $(fast_float_la_OBJECTS) $(fast_float_la_DEPENDENCIES) $(EXTRA_fast_float_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) -rpath $(extdir) $(fast_float_la_OBJECTS) $(fast_float_la_LIBADD) $(LIBS) +float.la: $(float_la_OBJECTS) $(float_la_DEPENDENCIES) $(EXTRA_float_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) -rpath $(extdir) $(float_la_OBJECTS) $(float_la_LIBADD) $(LIBS) gegl-fixups.la: $(gegl_fixups_la_OBJECTS) $(gegl_fixups_la_DEPENDENCIES) $(EXTRA_gegl_fixups_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(extdir) $(gegl_fixups_la_OBJECTS) $(gegl_fixups_la_LIBADD) $(LIBS) gggl-lies.la: $(gggl_lies_la_OBJECTS) $(gggl_lies_la_DEPENDENCIES) $(EXTRA_gggl_lies_la_DEPENDENCIES) @@ -417,6 +433,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CIE.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fast-float.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gegl-fixups.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gggl-lies.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gggl.Plo@am__quote@ diff --git a/extensions/fast-float.c b/extensions/fast-float.c new file mode 100644 index 0000000..fd7fb9f --- /dev/null +++ b/extensions/fast-float.c @@ -0,0 +1,471 @@ +/* babl - dynamically extendable universal pixel conversion library. + * Copyright (C) 2012, Øyvind Kolås + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * . + */ + +#include "config.h" + +#include +#include + +#include "babl.h" +#include "babl-cpuaccel.h" +#include "extensions/util.h" +#include "base/util.h" + +#define INLINE inline + +#define LSHIFT 2 + +typedef float (* BablLookupFunction) (float value, + void *data); +#define babl_LOOKUP_MAX_ENTRIES (819200) + +typedef struct BablLookup +{ + BablLookupFunction function; + void *data; + int shift; + uint32_t positive_min, positive_max, negative_min, negative_max; + uint32_t bitmask[babl_LOOKUP_MAX_ENTRIES/32]; + float table[]; +} BablLookup; + + +static BablLookup *babl_lookup_new (BablLookupFunction function, + void * data, + float start, + float end, + float precision); +#if 0 +static void babl_lookup_free (BablLookup *lookup); +#endif + + +static inline float +babl_lookup (BablLookup *lookup, + float number) +{ + union + { + float f; + uint32_t i; + } u; + uint32_t i; + + u.f = number; + i = (u.i << LSHIFT )>> lookup->shift; + + if (i > lookup->positive_min && + i < lookup->positive_max) + i = i - lookup->positive_min; + else if (i > lookup->negative_min && + i < lookup->negative_max) + i = i - lookup->negative_min + (lookup->positive_max - lookup->positive_min); + else + return lookup->function (number, lookup->data); + + if (!(lookup->bitmask[i/32] & (1<<(i & 31)))) + { + /* XXX: should look up the value in the middle of the range + * that yields a given value, + * + * potentially even do linear interpolation between + * the two neighbour values to get away with a tiny + * lookup table.. + */ + lookup->table[i]= lookup->function (number, lookup->data); + lookup->bitmask[i/32] |= (1<<(i & 31)); + } + + return lookup->table[i]; +} + +static BablLookup * +babl_lookup_new (BablLookupFunction function, + void * data, + float start, + float end, + float precision) +{ + BablLookup *lookup; + union + { + float f; + uint32_t i; + } u; + int positive_min, positive_max, negative_min, negative_max; + int shift; + + /* normalize input parameters */ + if (start > end) + { /* swap */ + u.f = start; + start = end; + end = u.f; + } + + if (precision <= 0.000005) shift = 0; /* checked for later */ + else if (precision <= 0.000010) shift = 8; + else if (precision <= 0.000020) shift = 9; + else if (precision <= 0.000040) shift = 10; + else if (precision <= 0.000081) shift = 11; + else if (precision <= 0.000161) shift = 12; + else if (precision <= 0.000324) shift = 14; + else if (precision <= 0.000649) shift = 15; + else shift = 16; /* a bit better than 8bit sRGB quality */ + + /* Adjust slightly away from 0.0, saving many entries close to 0, this + * causes lookups very close to zero to be passed directly to the + * function instead. + */ + if (start == 0.0) + start = precision; + if (end == 0.0) + end = -precision; + + /* Compute start and */ + + if (start < 0.0 || end < 0.0) + { + if (end < 0.0) + { + u.f = start; + positive_max = (u.i << LSHIFT) >> shift; + u.f = end; + positive_min = (u.i << LSHIFT) >> shift; + negative_min = positive_max; + negative_max = positive_max; + } + else + { + u.f = 0 - precision; + positive_min = (u.i << LSHIFT) >> shift; + u.f = start; + positive_max = (u.i << LSHIFT) >> shift; + + u.f = 0 + precision; + negative_min = (u.i << LSHIFT) >> shift; + u.f = end; + negative_max = (u.i << LSHIFT) >> shift; + } + } + else + { + u.f = start; + positive_min = (u.i << LSHIFT) >> shift; + u.f = end; + positive_max = (u.i << LSHIFT) >> shift; + negative_min = positive_max; + negative_max = positive_max; + } + + if (shift == 0) /* short circuit, do not use ranges */ + { + positive_min = positive_max = negative_min = negative_max = 0; + } + + if ((positive_max-positive_min) + (negative_max-negative_min) > babl_LOOKUP_MAX_ENTRIES) + { + /* Reduce the size of the cache tables to fit within the bittable + * budget (the maximum allocation is around 2.18mb of memory + */ + + int diff = (positive_max-positive_min) + (negative_max-negative_min) - babl_LOOKUP_MAX_ENTRIES; + + if (negative_max - negative_min > 0) + { + if (negative_max - negative_min >= diff) + { + negative_max -= diff; + diff = 0; + } + else + { + diff -= negative_max - negative_min; + negative_max = negative_min; + } + } + if (diff) + positive_max-=diff; + } + + lookup = calloc (sizeof (BablLookup) + sizeof (float) * + ((positive_max-positive_min)+ + (negative_max-negative_min)), 1); + + lookup->positive_min = positive_min; + lookup->positive_max = positive_max; + lookup->negative_min = negative_min; + lookup->negative_max = negative_max; + lookup->shift = shift; + lookup->function = function; + lookup->data = data; + + return lookup; +} + +static BablLookup *fast_pow = NULL; + +static inline float core_lookup (float val, void *userdata) +{ + return linear_to_gamma_2_2 (val); +} + +static float +linear_to_gamma_2_2_lut (float val) +{ + return babl_lookup (fast_pow, val); +} + + +static BablLookup *fast_rpow = NULL; + +static inline float core_rlookup (float val, void *userdata) +{ + return gamma_2_2_to_linear (val); +} + +static float +gamma_2_2_to_linear_lut (float val) +{ + return babl_lookup (fast_rpow, val); +} + +#if 0 +static void +babl_lookup_free (BablLookup *lookup) +{ + free (lookup); +} +#endif + +static INLINE long +conv_rgbaF_linear_rgbAF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + float alpha = fsrc[3]; + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha; + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha; + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha; + *fdst++ = *fsrc++; + } + return samples; +} + +static INLINE long +conv_rgbAF_linear_rgbAF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + float alpha = fsrc[3]; + if (alpha < BABL_ALPHA_THRESHOLD) + { + *fdst++ = 0.0; + *fdst++ = 0.0; + *fdst++ = 0.0; + *fdst++ = 0.0; + fsrc+=4; + } + else if (alpha >= 1.0) + { + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = *fsrc++; + } + else + { + float alpha_recip = 1.0 / alpha; + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++ * alpha_recip) * alpha; + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++ * alpha_recip) * alpha; + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++ * alpha_recip) * alpha; + *fdst++ = *fsrc++; + } + } + return samples; +} + +static INLINE long +conv_rgbaF_linear_rgbaF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = *fsrc++; + } + return samples; +} + +static INLINE long +conv_rgbF_linear_rgbF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + *fdst++ = linear_to_gamma_2_2_lut (*fsrc++); + } + return samples; +} + + +static INLINE long +conv_rgbaF_gamma_rgbaF_linear (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = gamma_2_2_to_linear_lut (*fsrc++); + *fdst++ = gamma_2_2_to_linear_lut (*fsrc++); + *fdst++ = gamma_2_2_to_linear_lut (*fsrc++); + *fdst++ = *fsrc++; + } + return samples; +} + +static INLINE long +conv_rgbF_gamma_rgbF_linear (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = gamma_2_2_to_linear_lut (*fsrc++); + *fdst++ = gamma_2_2_to_linear_lut (*fsrc++); + *fdst++ = gamma_2_2_to_linear_lut (*fsrc++); + } + return samples; +} + +#define o(src, dst) \ + babl_conversion_new (src, dst, "linear", conv_ ## src ## _ ## dst, NULL) + +int init (void); + +int +init (void) +{ + const Babl *rgbaF_linear = babl_format_new ( + babl_model ("RGBA"), + babl_type ("float"), + babl_component ("R"), + babl_component ("G"), + babl_component ("B"), + babl_component ("A"), + NULL); + const Babl *rgbAF_linear = babl_format_new ( + babl_model ("RaGaBaA"), + babl_type ("float"), + babl_component ("Ra"), + babl_component ("Ga"), + babl_component ("Ba"), + babl_component ("A"), + NULL); + const Babl *rgbaF_gamma = babl_format_new ( + babl_model ("R'G'B'A"), + babl_type ("float"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + babl_component ("A"), + NULL); + const Babl *rgbAF_gamma = babl_format_new ( + babl_model ("R'aG'aB'aA"), + babl_type ("float"), + babl_component ("R'a"), + babl_component ("G'a"), + babl_component ("B'a"), + babl_component ("A"), + NULL); + const Babl *rgbF_linear = babl_format_new ( + babl_model ("RGB"), + babl_type ("float"), + babl_component ("R"), + babl_component ("G"), + babl_component ("B"), + NULL); + const Babl *rgbF_gamma = babl_format_new ( + babl_model ("R'G'B'"), + babl_type ("float"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + NULL); + + { + float f; + float a; + + fast_pow = babl_lookup_new (core_lookup, NULL, 0.0, 1.0, 0.0001); + fast_rpow = babl_lookup_new (core_rlookup, NULL, 0.0, 1.0, 0.0001); + + for (f = 0.0; f < 1.0; f+= 0.00001) + { + a = linear_to_gamma_2_2_lut (f); + a = gamma_2_2_to_linear_lut (f); + } + if (a < -10) + f = 2; + + } + + o (rgbAF_linear, rgbAF_gamma); + o (rgbaF_linear, rgbAF_gamma); + o (rgbaF_linear, rgbaF_gamma); + o (rgbaF_gamma, rgbaF_linear); + o (rgbF_linear, rgbF_gamma); + o (rgbF_gamma, rgbF_linear); + + return 0; +} + diff --git a/extensions/float.c b/extensions/float.c new file mode 100644 index 0000000..067d4e9 --- /dev/null +++ b/extensions/float.c @@ -0,0 +1,230 @@ +/* babl - dynamically extendable universal pixel conversion library. + * Copyright (C) 2012, Øyvind Kolås + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * . + */ + +#include "config.h" + +#include +#include + +#include "babl.h" +#include "babl-cpuaccel.h" +#include "extensions/util.h" +#include "base/util.h" + +#define INLINE inline + + +static INLINE long +conv_rgbaF_linear_rgbAF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + float alpha = fsrc[3]; + *fdst++ = linear_to_gamma_2_2 (*fsrc++) * alpha; + *fdst++ = linear_to_gamma_2_2 (*fsrc++) * alpha; + *fdst++ = linear_to_gamma_2_2 (*fsrc++) * alpha; + *fdst++ = *fsrc++; + } + return samples; +} + +static INLINE long +conv_rgbAF_linear_rgbAF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + float alpha = fsrc[3]; + if (alpha < BABL_ALPHA_THRESHOLD) + { + *fdst++ = 0.0; + *fdst++ = 0.0; + *fdst++ = 0.0; + *fdst++ = 0.0; + fsrc+=4; + } + else if (alpha >= 1.0) + { + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = *fsrc++; + } + else + { + float alpha_recip = 1.0 / alpha; + *fdst++ = linear_to_gamma_2_2 (*fsrc++ * alpha_recip) * alpha; + *fdst++ = linear_to_gamma_2_2 (*fsrc++ * alpha_recip) * alpha; + *fdst++ = linear_to_gamma_2_2 (*fsrc++ * alpha_recip) * alpha; + *fdst++ = *fsrc++; + } + } + return samples; +} + +static INLINE long +conv_rgbaF_linear_rgbaF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = *fsrc++; + } + return samples; +} + +static INLINE long +conv_rgbF_linear_rgbF_gamma (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + *fdst++ = linear_to_gamma_2_2 (*fsrc++); + } + return samples; +} + + +static INLINE long +conv_rgbaF_gamma_rgbaF_linear (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = gamma_2_2_to_linear (*fsrc++); + *fdst++ = gamma_2_2_to_linear (*fsrc++); + *fdst++ = gamma_2_2_to_linear (*fsrc++); + *fdst++ = *fsrc++; + } + return samples; +} + +static INLINE long +conv_rgbF_gamma_rgbF_linear (unsigned char *src, + unsigned char *dst, + long samples) +{ + float *fsrc = (float *) src; + float *fdst = (float *) dst; + int n = samples; + + while (n--) + { + *fdst++ = gamma_2_2_to_linear (*fsrc++); + *fdst++ = gamma_2_2_to_linear (*fsrc++); + *fdst++ = gamma_2_2_to_linear (*fsrc++); + } + return samples; +} + +#define o(src, dst) \ + babl_conversion_new (src, dst, "linear", conv_ ## src ## _ ## dst, NULL) + +int init (void); + +int +init (void) +{ + const Babl *rgbaF_linear = babl_format_new ( + babl_model ("RGBA"), + babl_type ("float"), + babl_component ("R"), + babl_component ("G"), + babl_component ("B"), + babl_component ("A"), + NULL); + const Babl *rgbAF_linear = babl_format_new ( + babl_model ("RaGaBaA"), + babl_type ("float"), + babl_component ("Ra"), + babl_component ("Ga"), + babl_component ("Ba"), + babl_component ("A"), + NULL); + const Babl *rgbaF_gamma = babl_format_new ( + babl_model ("R'G'B'A"), + babl_type ("float"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + babl_component ("A"), + NULL); + const Babl *rgbAF_gamma = babl_format_new ( + babl_model ("R'aG'aB'aA"), + babl_type ("float"), + babl_component ("R'a"), + babl_component ("G'a"), + babl_component ("B'a"), + babl_component ("A"), + NULL); + const Babl *rgbF_linear = babl_format_new ( + babl_model ("RGB"), + babl_type ("float"), + babl_component ("R"), + babl_component ("G"), + babl_component ("B"), + NULL); + const Babl *rgbF_gamma = babl_format_new ( + babl_model ("R'G'B'"), + babl_type ("float"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + NULL); + + o (rgbAF_linear, rgbAF_gamma); + o (rgbaF_linear, rgbAF_gamma); + o (rgbaF_linear, rgbaF_gamma); + o (rgbaF_gamma, rgbaF_linear); + o (rgbF_linear, rgbF_gamma); + o (rgbF_gamma, rgbF_linear); + + return 0; +} + diff --git a/extensions/gegl-fixups.c b/extensions/gegl-fixups.c index 3fb6977..c0919c9 100644 --- a/extensions/gegl-fixups.c +++ b/extensions/gegl-fixups.c @@ -323,67 +323,6 @@ conv_rgb8_rgbaF (unsigned char *src, unsigned char *dst, long samples) return samples; } -static long -conv_rgbAF_sdl32 (unsigned char *srcc, - unsigned char *dstc, - long samples) -{ - float *src = (void *) srcc; - unsigned char *dst = (void *) dstc; - long n = samples; - - while (n--) - { - int i; - float alpha = src[3]; - for (i = 0; i < 3; i++) - { - float ca = src[i]; - int ret; - if (alpha < BABL_ALPHA_THRESHOLD) - ret = 0; - else - ret = table_F_8g[gggl_float_to_index16 (ca / alpha)]; - if (ret <= 0) - dst[i] = 0; - else if (ret > 255) - dst[i] = 255; - else - dst[i] = ret; - } - { - int t = dst[0]; - dst[0] = dst[2]; - dst[2] = t; - dst[3] = 255; - } - src += 4; - dst += 4; - } - return samples; -} - - -static long -conv_rgbaF_sdl32 (unsigned char *srcc, - unsigned char *dstc, - long samples) -{ - float *src = (void *) srcc; - unsigned char *dst = (void *) dstc; - long n = samples; - - while (n--) - { - dst[0] = table_F_8g[gggl_float_to_index16 (src[2])]; - dst[1] = table_F_8g[gggl_float_to_index16 (src[1])]; - dst[2] = table_F_8g[gggl_float_to_index16 (src[0])]; - src += 4; - dst += 4; - } - return samples; -} - static long conv_rgbAF_rgb8 (unsigned char *srcc, unsigned char *dstc, @@ -473,9 +412,11 @@ conv_rgbAF_rgbaF (unsigned char *srcc, while (n--) { float alpha = src[3]; - float recip = 1.0/alpha; + float recip; if (alpha < BABL_ALPHA_THRESHOLD) recip = 0.0; + else + recip = 1.0/alpha; dst[0] = src[0] * recip; dst[1] = src[1] * recip; dst[2] = src[2] * recip; @@ -518,8 +459,6 @@ conv_rgbAF_lrgba8 (unsigned char *srcc, return samples; } - - #define conv_rgb8_rgbAF conv_rgb8_rgbaF int init (void); @@ -577,15 +516,6 @@ init (void) babl_component ("G'"), babl_component ("B'"), NULL); - const Babl *sdl32 = babl_format_new ( - "name", "B'aG'aR'aPAD u8", - babl_model ("R'G'B'"), - babl_type ("u8"), - babl_component ("B'"), - babl_component ("G'"), - babl_component ("R'"), - babl_component ("PAD"), - NULL); table_init (); @@ -598,10 +528,8 @@ init (void) o (rgb8, rgbaF); o (rgb8, rgbAF); o (rgba8, rgbaF); - o (rgbaF, sdl32); o (rgbaF, rgb8); o (rgbAF, rgb8); - o (rgbAF, sdl32); o (bgrA8, rgba8); return 0; diff --git a/extensions/gggl-lies.c b/extensions/gggl-lies.c index 6627e6e..e3c0029 100644 --- a/extensions/gggl-lies.c +++ b/extensions/gggl-lies.c @@ -735,10 +735,8 @@ conv_gF_gaF (unsigned char *src, unsigned char *dst, long samples) return samples; } -#define conv_gAF_gF conv_gaF_gF #define conv_gF_gAF conv_gF_gaF -#define conv_rgbAF_rgbF conv_rgbaF_rgbF #define conv_rgbF_rgbAF conv_rgbF_rgbaF /* colorchannel dropping and adding */ @@ -835,29 +833,6 @@ conv_rgbaF_gaF (unsigned char *src, unsigned char *dst, long samples) /* other conversions coded for some optimisation reason or sumthin */ -static INLINE long -conv_rgbA8_rgbaF (unsigned char *src, unsigned char *dst, long samples) -{ - long n = samples; - - while (n--) - { - float alpha = (*(unsigned char *) src + (3)) / 255.0; - int c; - - for (c = 0; c < 3; c++) - { - (*(float *) dst) = (*(unsigned char *) src / 255.0) / alpha; - dst += 4; - src += 1; - } - *(float *) dst = alpha; - dst += 4; - src += 1; - } - return samples; -} - static INLINE long conv_rgbaF_rgbA8 (unsigned char *src, unsigned char *dst, long samples) { @@ -881,29 +856,6 @@ conv_rgbaF_rgbA8 (unsigned char *src, unsigned char *dst, long samples) return samples; } -static INLINE long -conv_rgbaF_rgbA16 (unsigned char *src, unsigned char *dst, long samples) -{ - long n = samples; - - while (n--) - { - float alpha = (*(float *) src + (4 * 3)); - int c; - - for (c = 0; c < 3; c++) - { - *(unsigned short *) dst = ((*(float *) src) * alpha) * 65535.0; - dst += 2; - src += 4; - } - *(unsigned short *) dst = alpha * 65535.0; - dst += 2; - src += 4; - } - return samples; -} - static INLINE long conv_rgbaF_rgb8 (unsigned char *src, unsigned char *dst, long samples) { @@ -1290,29 +1242,6 @@ conv_rgb8_Prgb8 (unsigned char *src, unsigned char *dst, long samples) return samples; } -static INLINE long -conv_rgbA16_rgba16 (unsigned char *src, unsigned char *dst, long samples) -{ - long n = samples; - - while (n--) - { - if (src[3]) - { - ((unsigned short *) dst)[0] = - (((unsigned short *) src)[0] * 65535) / src[3]; - ((unsigned short *) dst)[1] = - (((unsigned short *) src)[1] * 65535) / src[3]; - ((unsigned short *) dst)[2] = - (((unsigned short *) src)[2] * 65535) / src[3]; - } - ((unsigned short *) dst)[3] = ((unsigned short *) src)[3]; - dst += 8; - src += 8; - } - return samples; -} - static INLINE long conv_rgb8_rgbP8 (unsigned char *src, unsigned char *dst, long samples) { @@ -1407,8 +1336,6 @@ conv_rgba8_rgb8 (unsigned char *src, unsigned char *dst, long samples) return samples; } -#define conv_rgbA8_rgb8 conv_rgbP8_rgb8 - #ifndef byteclamp #define byteclamp(j) do { if (j < 0) j = 0;else if (j > 255) j = 255; } while (0) #endif @@ -1431,169 +1358,6 @@ conv_rgba8_rgb8 (unsigned char *src, unsigned char *dst, long samples) byteclamp (V); \ } while (0) -static INLINE long -conv_yuv8_rgb8 (unsigned char *src, unsigned char *dst, long samples) -{ - long n = samples; - - while (n--) - { - int R, G, B; - - YUV82RGB8 (src[0], src[1], src[2], R, G, B); - dst[0] = R; - dst[1] = G; - dst[2] = B; - src += 3; - dst += 3; - } - return samples; -} - -static INLINE long -conv_rgb8_yuv8 (unsigned char *src, unsigned char *dst, long samples) -{ - long n = samples; - - while (n--) - { - int Y, U, V; - - YUV82RGB8 (src[0], src[1], src[2], Y, U, V); - dst[0] = Y; - dst[1] = U; - dst[2] = V; - src += 3; - dst += 3; - } - return samples; -} - -static INLINE long -conv_rgbaF_yuvaF (unsigned char *src, unsigned char *dst, long samples) -{ - float *src_f = (float *) src; - float *dst_f = (float *) dst; - long n = samples; - - while (n--) - { - float R, G, B; - float Y, U, V; - - R = src_f[0]; - G = src_f[1]; - B = src_f[2]; - - Y = 0.299 * R + 0.587 * B + 0.114 * B; - U = (-0.1687) * R - 0.3313 * G + 0.5 * B /* +0.5 */; - V = 0.5 * R - 0.4187 * G - 0.0813 * B /* +0.5 */; - - dst_f[0] = Y; - dst_f[1] = U; - dst_f[2] = V; - dst_f[3] = src_f[3]; - - dst_f += 4; - src_f += 4; - } - return samples; -} - -static INLINE long -conv_yuvaF_rgbaF (unsigned char *src, unsigned char *dst, long samples) -{ - float *src_f = (float *) src; - float *dst_f = (float *) dst; - long n = samples; - - while (n--) - { - float Y, U, V; - float R, G, B; - - Y = src_f[0]; - U = src_f[1]; - V = src_f[2]; - - R = Y + 1.40200 * (V /*-0.5*/); - G = Y - 0.34414 * (U /*-0.5*/) -0.71414 * (V /*-0.5*/); - B = Y + 1.77200 * (U /*-0.5*/); - - dst_f[0] = R; - dst_f[1] = G; - dst_f[2] = B; - dst_f[3] = src_f[3]; - - dst_f += 4; - src_f += 4; - } - return samples; -} - - - -static INLINE long -conv_rgbF_yuvF (unsigned char *src, unsigned char *dst, long samples) -{ - float *src_f = (float *) src; - float *dst_f = (float *) dst; - long n = samples; - - while (n--) - { - float R, G, B; - float Y, U, V; - - R = src_f[0]; - G = src_f[1]; - B = src_f[2]; - - Y = 0.299 * R + 0.587 * B + 0.114 * B; - U = (-0.1687) * R - 0.3313 * G + 0.5 * B /* +0.5 */; - V = 0.5 * R - 0.4187 * G - 0.0813 * B /* +0.5 */; - - dst_f[0] = Y; - dst_f[1] = U; - dst_f[2] = V; - - dst_f += 3; - src_f += 3; - } - return samples; -} - -static INLINE long -conv_yuvF_rgbF (unsigned char *src, unsigned char *dst, long samples) -{ - float *src_f = (float *) src; - float *dst_f = (float *) dst; - long n = samples; - - while (n--) - { - float Y, U, V; - float R, G, B; - - Y = src_f[0]; - U = src_f[1]; - V = src_f[2]; - - R = Y + 1.40200 * (V /*-0.5*/); - G = Y - 0.34414 * (U /*-0.5*/) -0.71414 * (V /*-0.5*/); - B = Y + 1.77200 * (U /*-0.5*/); - - dst_f[0] = R; - dst_f[1] = G; - dst_f[2] = B; - - dst_f += 3; - src_f += 3; - } - return samples; -} - - /******* lab, xyz and rgb interaction, lifted from cpercep by adam d. moss */ /* @@ -1924,35 +1688,6 @@ init (void) babl_type ("u8"), babl_component ("Y"), NULL); - const Babl *yuv8 = babl_format_new ( - "name", "Y'CbCr u8", - "planar", - babl_model ("Y'CbCr"), - babl_type ("u8-luma"), - babl_sampling (1, 1), - babl_component ("Y'"), - babl_type ("u8-chroma"), - babl_sampling (2, 2), - babl_component ("Cb"), - babl_component ("Cr"), - NULL); - const Babl *yuvF = babl_format_new ( - babl_model ("Y'CbCr"), - babl_type ("float"), - babl_component ("Y'"), - babl_type ("float"), - babl_component ("Cb"), - babl_component ("Cr"), - NULL); - const Babl *yuvaF = babl_format_new ( - babl_model ("Y'CbCrA"), - babl_type ("float"), - babl_component ("Y'"), - babl_type ("float"), - babl_component ("Cb"), - babl_component ("Cr"), - babl_component ("A"), - NULL); #define o(src, dst) \ babl_conversion_new (src, dst, "linear", conv_ ## src ## _ ## dst, NULL) @@ -1993,11 +1728,6 @@ init (void) o (g16, g8); o (rgbaF, rgbAF); o (rgbAF, rgbaF); - o (yuv8, rgb8); - o (rgb8, yuv8); - o (yuvF, rgbF); - o (rgbF, yuvF); - o (yuvaF, rgbaF); o (rgbA8, rgbA16); o (rgb8, rgb16); o (ga8, ga16); @@ -2020,9 +1750,7 @@ init (void) o (gaF, gAF); o (gAF, gaF); o (rgbaF, rgbF); - o (rgbAF, rgbF); o (gaF, gF); - o (gAF, gF); o (rgbF, rgbaF); o (rgbF, rgbAF); o (gF, gaF); @@ -2034,29 +1762,18 @@ init (void) o (rgbAF, gAF); o (gAF, rgbAF); o (rgbaF, rgb8); - o (rgbA8, rgbaF); o (rgbA8, rgbAF); o (ga8, gaF); o (gA8, gAF); o (rgbA8, rgba8); o (rgba8, rgbA8); - o (rgbA16, rgba16); o (gAF, rgbAF); o (rgbaF, g8); o (rgbaF, rgb16); o (rgb8, rgba8); o (rgb8, rgbA8); - o (rgbA8, rgb8); o (rgba8, rgb8); o (rgbaF, rgbA8); - o (rgbaF, rgbA16); - o (rgbA16, rgbaF); - o (yuv8, rgb8); - o (rgb8, yuv8); - o (yuvF, rgbF); - o (rgbF, yuvF); - o (yuvaF, rgbaF); - o (rgbaF, yuvaF); #if 0 o (rgbF, xyzF); o (xyzF, rgbF); diff --git a/extensions/gggl.c b/extensions/gggl.c index 16d3276..6a007c6 100644 --- a/extensions/gggl.c +++ b/extensions/gggl.c @@ -610,9 +610,10 @@ conv_rgbAF_rgbaF (unsigned char *src, unsigned char *dst, long samples) } else { + float alpha_recip = 1.0 / alpha; for (c = 0; c < 3; c++) { - *(float *) dst = ((*(float *) src) / alpha); + *(float *) dst = ((*(float *) src) * alpha_recip); dst += 4; src += 4; } diff --git a/extensions/sse-fixups.c b/extensions/sse-fixups.c index 83fa240..b44bb5e 100644 --- a/extensions/sse-fixups.c +++ b/extensions/sse-fixups.c @@ -163,6 +163,10 @@ conv_rgbaF_linear_rgba8_linear (unsigned char *src, return samples; } +#define conv_rgbaF_gamma_rgba8_gamma conv_rgbaF_linear_rgba8_linear +#define conv_rgbaF_gamma_rgb8_gamma conv_rgbaF_linear_rgb8_linear + + #endif #define o(src, dst) \ @@ -199,11 +203,37 @@ init (void) babl_component ("B"), NULL); + const Babl *rgbaF_gamma = babl_format_new ( + babl_model ("R'G'B'A"), + babl_type ("float"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + babl_component ("A"), + NULL); + const Babl *rgba8_gamma = babl_format_new ( + babl_model ("R'G'B'A"), + babl_type ("u8"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + babl_component ("A"), + NULL); + const Babl *rgb8_gamma = babl_format_new ( + babl_model ("R'G'B'"), + babl_type ("u8"), + babl_component ("R'"), + babl_component ("G'"), + babl_component ("B'"), + NULL); + if ((babl_cpu_accel_get_support () & BABL_CPU_ACCEL_X86_MMX) && (babl_cpu_accel_get_support () & BABL_CPU_ACCEL_X86_SSE)) { o (rgbaF_linear, rgb8_linear); o (rgbaF_linear, rgba8_linear); + o (rgbaF_gamma, rgb8_gamma); + o (rgbaF_gamma, rgba8_gamma); } #endif -- 2.30.2